Skip to content
Snippets Groups Projects
Commit 8c4c6a8a authored by Iustin Pop's avatar Iustin Pop
Browse files

Export more stats in hspace

This patch changes Cluster.totalResources to compute more resources and
prints them in hspace.
parent 2795466b
No related branches found
No related tags found
No related merge requests found
...@@ -90,14 +90,22 @@ data IMove = Failover -- ^ Failover the instance (f) ...@@ -90,14 +90,22 @@ data IMove = Failover -- ^ Failover the instance (f)
data Table = Table Node.List Instance.List Score [Placement] data Table = Table Node.List Instance.List Score [Placement]
deriving (Show) deriving (Show)
data CStats = CStats { cs_fmem :: Int -- ^ Cluster free mem data CStats = CStats { cs_fmem :: Int -- ^ Cluster free mem
, cs_fdsk :: Int -- ^ Cluster free disk , cs_fdsk :: Int -- ^ Cluster free disk
, cs_amem :: Int -- ^ Cluster allocatable mem , cs_amem :: Int -- ^ Cluster allocatable mem
, cs_adsk :: Int -- ^ Cluster allocatable disk , cs_adsk :: Int -- ^ Cluster allocatable disk
, cs_acpu :: Int -- ^ Cluster allocatable cpus , cs_acpu :: Int -- ^ Cluster allocatable cpus
, cs_mmem :: Int -- ^ Max node allocatable mem , cs_mmem :: Int -- ^ Max node allocatable mem
, cs_mdsk :: Int -- ^ Max node allocatable disk , cs_mdsk :: Int -- ^ Max node allocatable disk
, cs_mcpu :: Int -- ^ Max node allocatable cpu , cs_mcpu :: Int -- ^ Max node allocatable cpu
, cs_imem :: Int -- ^ Instance used mem
, cs_idsk :: Int -- ^ Instance used disk
, cs_icpu :: Int -- ^ Instance used cpu
, cs_tmem :: Double -- ^ Cluster total mem
, cs_tdsk :: Double -- ^ Cluster total disk
, cs_tcpu :: Double -- ^ Cluster total cpus
, cs_xmem :: Int -- ^ Unnacounted for mem
, cs_nmem :: Int -- ^ Node own memory
} }
-- * Utility functions -- * Utility functions
...@@ -132,17 +140,34 @@ emptyCStats = CStats { cs_fmem = 0 ...@@ -132,17 +140,34 @@ emptyCStats = CStats { cs_fmem = 0
, cs_mmem = 0 , cs_mmem = 0
, cs_mdsk = 0 , cs_mdsk = 0
, cs_mcpu = 0 , cs_mcpu = 0
, cs_imem = 0
, cs_idsk = 0
, cs_icpu = 0
, cs_tmem = 0
, cs_tdsk = 0
, cs_tcpu = 0
, cs_xmem = 0
, cs_nmem = 0
} }
updateCStats :: CStats -> Node.Node -> CStats updateCStats :: CStats -> Node.Node -> CStats
updateCStats cs node = updateCStats cs node =
let CStats { cs_fmem = x_fmem, cs_fdsk = x_fdsk, let CStats { cs_fmem = x_fmem, cs_fdsk = x_fdsk,
cs_amem = x_amem, cs_acpu = x_acpu, cs_adsk = x_adsk, cs_amem = x_amem, cs_acpu = x_acpu, cs_adsk = x_adsk,
cs_mmem = x_mmem, cs_mdsk = x_mdsk, cs_mcpu = x_mcpu } cs_mmem = x_mmem, cs_mdsk = x_mdsk, cs_mcpu = x_mcpu,
cs_imem = x_imem, cs_idsk = x_idsk, cs_icpu = x_icpu,
cs_tmem = x_tmem, cs_tdsk = x_tdsk, cs_tcpu = x_tcpu,
cs_xmem = x_xmem, cs_nmem = x_nmem
}
= cs = cs
inc_amem = Node.f_mem node - Node.r_mem node inc_amem = Node.f_mem node - Node.r_mem node
inc_amem' = if inc_amem > 0 then inc_amem else 0 inc_amem' = if inc_amem > 0 then inc_amem else 0
inc_adsk = Node.availDisk node inc_adsk = Node.availDisk node
inc_imem = truncate (Node.t_mem node) - Node.n_mem node
- Node.x_mem node - Node.f_mem node
inc_icpu = Node.u_cpu node
inc_idsk = truncate (Node.t_dsk node) - Node.f_dsk node
in CStats { cs_fmem = x_fmem + Node.f_mem node in CStats { cs_fmem = x_fmem + Node.f_mem node
, cs_fdsk = x_fdsk + Node.f_dsk node , cs_fdsk = x_fdsk + Node.f_dsk node
, cs_amem = x_amem + inc_amem' , cs_amem = x_amem + inc_amem'
...@@ -151,6 +176,14 @@ updateCStats cs node = ...@@ -151,6 +176,14 @@ updateCStats cs node =
, cs_mmem = max x_mmem inc_amem' , cs_mmem = max x_mmem inc_amem'
, cs_mdsk = max x_mdsk inc_adsk , cs_mdsk = max x_mdsk inc_adsk
, cs_mcpu = x_mcpu , cs_mcpu = x_mcpu
, cs_imem = x_imem + inc_imem
, cs_idsk = x_idsk + inc_idsk
, cs_icpu = x_icpu + inc_icpu
, cs_tmem = x_tmem + Node.t_mem node
, cs_tdsk = x_tdsk + Node.t_dsk node
, cs_tcpu = x_tcpu + Node.t_cpu node
, cs_xmem = x_xmem + Node.x_mem node
, cs_nmem = x_nmem + Node.n_mem node
} }
-- | Compute the total free disk and memory in the cluster. -- | Compute the total free disk and memory in the cluster.
......
...@@ -26,7 +26,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ...@@ -26,7 +26,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-} -}
module Ganeti.HTools.Node module Ganeti.HTools.Node
( Node(failN1, name, idx, t_mem, n_mem, f_mem, r_mem, ( Node(failN1, name, idx,
t_mem, n_mem, f_mem, r_mem, x_mem,
t_dsk, f_dsk, t_dsk, f_dsk,
t_cpu, u_cpu, t_cpu, u_cpu,
p_mem, p_dsk, p_rem, p_cpu, p_mem, p_dsk, p_rem, p_cpu,
......
...@@ -209,10 +209,20 @@ printStats kind cs = do ...@@ -209,10 +209,20 @@ printStats kind cs = do
printf "%s allocatable RAM: %d\n" kind (Cluster.cs_amem cs) printf "%s allocatable RAM: %d\n" kind (Cluster.cs_amem cs)
printf "%s reserved RAM: %d\n" kind (Cluster.cs_fmem cs - printf "%s reserved RAM: %d\n" kind (Cluster.cs_fmem cs -
Cluster.cs_amem cs) Cluster.cs_amem cs)
printf "%s instance RAM: %d\n" kind (Cluster.cs_imem cs)
printf "%s overhead RAM: %d\n" kind (Cluster.cs_xmem cs + Cluster.cs_nmem cs)
printf "%s RAM usage efficiency: %.8f\n"
kind (fromIntegral (Cluster.cs_imem cs) / Cluster.cs_tmem cs)
printf "%s free disk: %d\n" kind (Cluster.cs_fdsk cs) printf "%s free disk: %d\n" kind (Cluster.cs_fdsk cs)
printf "%s allocatable disk: %d\n" kind (Cluster.cs_adsk cs) printf "%s allocatable disk: %d\n" kind (Cluster.cs_adsk cs)
printf "%s reserved disk: %d\n" kind (Cluster.cs_fdsk cs - printf "%s reserved disk: %d\n" kind (Cluster.cs_fdsk cs -
Cluster.cs_adsk cs) Cluster.cs_adsk cs)
printf "%s instance disk: %d\n" kind (Cluster.cs_idsk cs)
printf "%s disk usage efficiency: %.8f\n"
kind (fromIntegral (Cluster.cs_idsk cs) / Cluster.cs_tdsk cs)
printf "%s instance cpus: %d\n" kind (Cluster.cs_icpu cs)
printf "%s cpu usage efficiency: %.8f\n"
kind (fromIntegral (Cluster.cs_icpu cs) / Cluster.cs_tcpu cs)
printf "%s max node allocatable RAM: %d\n" kind (Cluster.cs_mmem cs) printf "%s max node allocatable RAM: %d\n" kind (Cluster.cs_mmem cs)
printf "%s max node allocatable disk: %d\n" kind (Cluster.cs_mdsk cs) printf "%s max node allocatable disk: %d\n" kind (Cluster.cs_mdsk cs)
...@@ -294,6 +304,9 @@ main = do ...@@ -294,6 +304,9 @@ main = do
ini_cv (Cluster.printStats nl) ini_cv (Cluster.printStats nl)
else else
printf "Initial score: %.8f\n" ini_cv) printf "Initial score: %.8f\n" ini_cv)
printf "Cluster RAM: %.0f\n" (Cluster.cs_tmem ini_stats)
printf "Cluster disk: %.0f\n" (Cluster.cs_tdsk ini_stats)
printf "Cluster cpus: %.0f\n" (Cluster.cs_tcpu ini_stats)
printf "Initial instances: %d\n" num_instances printf "Initial instances: %d\n" num_instances
printStats "Initial" ini_stats printStats "Initial" ini_stats
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment