if res:
return res.percentage
- def get_memory_amounts(self, when=None):
+ def get_average_memory_amount(self, when=None):
res = self.db.get("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id) \
- SELECT AVG(fireinfo_profiles_memory.amount) AS avg, \
- STDDEV(fireinfo_profiles_memory.amount) AS stddev, \
- MIN(fireinfo_profiles_memory.amount) AS min, \
- MAX(fireinfo_profiles_memory.amount) AS max FROM profiles \
+ SELECT AVG(fireinfo_profiles_memory.amount) AS avg FROM profiles \
LEFT JOIN fireinfo_profiles_memory ON profiles.id = fireinfo_profiles_memory.profile_id", when)
if res:
- return (res.avg or 0, res.stddev or 0, res.min or 0, res.max or 0)
+ return res.avg or 0
def get_arch_map(self, when=None):
res = self.db.query("WITH profiles AS (SELECT fireinfo_profiles_with_data_at(%s) AS id) \
import random
import string
-def format_size(s):
- units = ("B", "k", "M", "G", "T")
+def format_size(s, max_unit=None):
+ units = ("B", "kB", "MB", "GB", "TB")
i = 0
while s >= 1024 and i < len(units) - 1:
s /= 1024
i += 1
+ if max_unit and units[i] == max_unit:
+ break
+
return "%.0f%s" % (s, units[i])
def format_time(s, shorter=True):
</div>
</section>
+ <section>
+ <div class="container">
+ <div class="row">
+ <div class="col-12 col-md-4 text-center">
+ <h1>{{ format_size(memory_avg * 1024, "MB") }}</h1>
+
+ <p class="text-muted">
+ {{ _("Average Amount of Memory") }}
+ </p>
+ </div>
+ </div>
+ </div>
+ </section>
+
<section class="inverse">
<div class="container">
<div class="row">
# Release
"latest_release" : self.backend.releases.get_latest(),
+ # Hardware
+ "memory_avg" : self.backend.fireinfo.get_average_memory_amount(when=self.when),
+
# Virtualization
"hypervisors" : self.fireinfo.get_hypervisor_map(when=self.when),
"virtual_ratio" : self.fireinfo.get_virtual_ratio(when=self.when),