From 8137eeb2193b5ef7ad68835a4cce518d68c8d726 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 6 Apr 2026 15:47:56 +0300 Subject: [PATCH] 037 improvements --- Application.cfc | 2 +- cloud_capacity.cfm | 164 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 130 insertions(+), 36 deletions(-) diff --git a/Application.cfc b/Application.cfc index 5175cab..92ab2f6 100644 --- a/Application.cfc +++ b/Application.cfc @@ -76,7 +76,7 @@ - + diff --git a/cloud_capacity.cfm b/cloud_capacity.cfm index 3f35ff5..a3b1154 100644 --- a/cloud_capacity.cfm +++ b/cloud_capacity.cfm @@ -7,13 +7,19 @@ + + select + (select max(ts) from vmreports.compute) as ts_compute + ,(select max(ts) from vmreports.host) as ts_host + + with capacity as ( -select "Cluster" as cluster, count(*) as hosts, sum(cores) as cores, round(sum(ghz)) as ghz, round(sum(ram)) as ram +select "Cluster" as cluster, count(*) as hosts, sum(cores) as cores, round(sum(ghz)::numeric,1) as ghz, round(sum(ram)) as ram from ( select "Cluster", "Host" - , avg("Host_CPU_Cores") as cores, avg("Host_CPU_Cores"*"Host_CPU_Speed") as ghz, avg("Host_RAM"*.85) as ram + , avg("Host_CPU_Cores"*"Host_CPU_Sockets") as cores, avg("Host_CPU_Cores"*"Host_CPU_Sockets"*"Host_CPU_Speed") as ghz, avg("Host_RAM"*.85) as ram from vmreports.compute where ts=(select max(ts) from vmreports.compute) group by "Cluster","Host" @@ -23,6 +29,7 @@ group by "Cluster"), usage as ( select "Cluster" as cluster +,count("UUID_VM") as vms , sum("VM_vCPU_count") as vm_cores , round(sum("VM_vCPU_count"*"VDC_CPU_Speed")) as vm_ghz , round(sum("VM_CPU_Reserv_GHz")) as vm_ghz_reserved @@ -46,6 +53,7 @@ SELECT ,sum("CPU_Cores"*"CPU_Sockets") as cores ,sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Cores"*"CPU_Sockets" ELSE 0 END) as cores_in_service ,round(sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Cores"*"CPU_Sockets"*"CPU_Speed" ELSE 0 END)::numeric,1) as ghz_in_service +,round(sum(CASE WHEN "Maintenance"='notInMaintenance' THEN "RAM_Total" ELSE 0 END)::numeric,0) as ram_in_service ,round(avg(CASE WHEN "Maintenance"='notInMaintenance' THEN "CPU_Speed" ELSE 0 END)::numeric,1) as ghz ,CASE WHEN sum("CPU_Cores"*"CPU_Sockets") > 0 THEN round((sum("CPU_Used_AVG"*"CPU_Cores"*"CPU_Sockets")/sum("CPU_Cores"*"CPU_Sockets"))::numeric,0) ELSE NULL END as cpu_usage_perc FROM vmreports.host h @@ -61,6 +69,15 @@ LEFT OUTER JOIN ( WHERE ts=(SELECT max(ts) FROM vmreports.host) GROUP BY h."Cluster", h."Cluster_v2", m.models ORDER BY h."Cluster" +), + +cluster_naming (cluster,commercial_name) AS (VALUES + ('cl01-vsan','msk1, Intel Cascade Lake 2,9 ГГц') + ,('cl02','msk1, Intel Cascade Lake 3,1 ГГц') + ,('cl04-vsan','msk1, AMD Milan 2,8 ГГц') + ,('cl05-1c','msk1, AMD Raphael 4,5 ГГц') + ,('cl06-vsan','msk1, Intel Ice Lake 2,8 ГГц') + ,('cl07-vsan','msk1, AMD Genoa 4,0 ГГц') ) @@ -68,33 +85,58 @@ select h.cluster as cluster_v1 h.cluster_v2 - h.models - h.hosts_total - h.hosts_in_maintenance - h.hosts_in_service + n.commercial_name + h.models + h.hosts_total + h.hosts_in_maintenance + h.hosts_in_service h.cores - h.cores_in_service - h.ghz_in_service - h.ghz - h.cpu_usage_perc - c.hosts + h.cores_in_service + h.ghz_in_service + h.ghz + h.ram_in_service + h.cpu_usage_perc + c.hosts c.cores as Cores_Capacity c.ghz as GHz_Capacity - u.vm_ghz_reserved - u.vm_ghz_promised - round((u.vm_ghz_promised/c.ghz)::numeric,2) as GHz_provision_rate - c.ram as RAM_Capacity - u.vm_ram_alloc - u.vm_ram_used - round((u.vm_ram_alloc/c.ram)::numeric,2) as GB_provision_rate + u.vm_ghz_reserved + u.vm_ghz_promised + round((u.vm_ghz_promised/c.ghz)::numeric,2)*100 as GHz_provision_rate + c.ram as RAM_Capacity + u.vm_ram_alloc + u.vm_ram_used + round((u.vm_ram_alloc/c.ram)::numeric,2)*100 as GB_alloc_perc + round((u.vm_ram_used/c.ram)::numeric,2)*100 as GB_usage_perc + round((u.vm_cores/c.cores)::numeric,1) as oversubscription + u.vm_cores + u.vms from cluster_stat h left outer join usage u on (h.cluster=u.cluster) left outer join capacity c on (h.cluster=c.cluster) - +left outer join cluster_naming n on (h.cluster=n.cluster) +where 1=1 order by + +select + sum(hosts_total) as hosts_total + ,sum(cores_in_service) as cores_in_service + ,sum(ghz_in_service) as ghz_in_service + ,sum(GHz_Capacity) as GHz_Capacity + ,sum(ram_in_service) as ram_in_service + ,sum(RAM_Capacity) as RAM_Capacity + ,sum(cores_in_service) as cores_in_service + ,sum(vm_cores) as vm_cores + ,sum(vm_ghz_reserved) as vm_ghz_reserved + ,sum(vm_ghz_promised) as vm_ghz_promised + ,sum(vm_ram_alloc) as vm_ram_alloc + ,sum(vm_ram_used) as vm_ram_used + ,sum(vms) as vms +from qRead + + @@ -105,16 +147,21 @@ order by - - + + - Сверка CRM - Cloud + Cloud Capacity - + - + +

Актуальность данных

+VM: #dateFormat(ts_compute,"YYYY-MM-DD")# #timeFormat(ts_compute,"HH:MM")# +Хосты: #dateFormat(ts_host,"YYYY-MM-DD")# #timeFormat(ts_host,"HH:MM")# +
+ + - - + + + @@ -135,18 +183,24 @@ order by + + + - + + + ВМ шт. + Средн. ВМ core | GB @@ -154,31 +208,71 @@ order by #cluster_v1# #cluster_v2# + #commercial_name# #models# #hosts_total# #hosts_in_maintenance# #hosts_in_service# #cores_in_service# - #ghz_in_service# - #ghz# + #numberFormat(ghz_in_service,".0")# + #numberFormat(ghz,".0")# + #ram_in_service# #cpu_usage_perc# + #oversubscription# #hosts# #Cores_Capacity# - #GHz_Capacity# - #vm_ghz_reserved# - #vm_ghz_promised# + #numberFormat(GHz_Capacity,".0")# + #numberFormat(vm_ghz_reserved,".0")# + #numberFormat(vm_ghz_promised,".0")# + #vm_cores# #GHz_provision_rate# #RAM_Capacity# #vm_ram_alloc# #vm_ram_used# - #GB_provision_rate# + #GB_alloc_perc# + #GB_usage_perc# + #vms# + #numberFormat(vm_cores/vms,".0")# #numberFormat(vm_ram_alloc/vms,".0")# + + + + + Итого + #hosts_total# + + + #cores_in_service# + #numberFormat(ghz_in_service,".0")# + + #ram_in_service# + + #numberFormat(vm_cores/cores_in_service,".0")# + + + + #numberFormat(GHz_Capacity,".0")# + #numberFormat(vm_ghz_reserved,".0")# + #numberFormat(vm_ghz_promised,".0")# + #vm_cores# + + #RAM_Capacity# + #vm_ram_alloc# + #vm_ram_used# + #numberFormat(vm_ram_alloc/ram_in_service*100,"0")# + #numberFormat(vm_ram_used/ram_in_service*100,"0")# + #vms# + #numberFormat(vm_cores/vms,".0")# #numberFormat(vm_ram_alloc/vms,".0")# - +Пока выводим избыточный набор колонок для контроля. Кроме того, еще не выбрали, какие колонки удобнее и релевантнее +
+* CPU GHz provision rate % - отношение зарезервированной частоты (с учетом 20% резерва по умолчанию) к наличной частоте процессоров +
+* Расхождения в оценке объема RAM частично связаны с разной оценкой затрат памяти на собственные нужды гипервизора