diff --git a/assets/components/LogViewer/MultiContainerStat.vue b/assets/components/LogViewer/MultiContainerStat.vue index 9e463113..1037b6fe 100644 --- a/assets/components/LogViewer/MultiContainerStat.vue +++ b/assets/components/LogViewer/MultiContainerStat.vue @@ -10,7 +10,7 @@ :data="cpuData" label="load" :stat-value="Math.max(0, totalStat.cpu).toFixed(2) + '%'" - :limit="limits.cpu.toFixed(0) + ' CPUs'" + :limit="roundCPU(limits.cpu) + ' CPU'" /> @@ -27,6 +27,8 @@ const totalStat = ref({ cpu: 0, memory: 0, memoryUsage: 0 }); const { history, reset } = useSimpleRefHistory(totalStat, { capacity: 300 }); const { hosts } = useHosts(); +const roundCPU = (num: number) => (Number.isInteger(num) ? num.toFixed(0) : num.toFixed(1)); + watch( () => containers, () => { diff --git a/internal/docker/client.go b/internal/docker/client.go index f27b76bc..7a1b4c23 100644 --- a/internal/docker/client.go +++ b/internal/docker/client.go @@ -388,10 +388,7 @@ func newContainerFromJSON(c docker.InspectResponse, host string) container.Conta group = c.Config.Labels["dev.dozzle.group"] } - CPULimit := float64(0) - if c.HostConfig.CPUPeriod > 0 { - CPULimit = float64(c.HostConfig.CPUQuota) / float64(c.HostConfig.CPUPeriod) - } + log.Debug().Float64("limit", float64(c.HostConfig.NanoCPUs)/1e9).Int64("nanoCPU", c.HostConfig.NanoCPUs).Msgf("Quota for container id=%s", c.ID) container := container.Container{ ID: c.ID[:12], @@ -405,7 +402,7 @@ func newContainerFromJSON(c docker.InspectResponse, host string) container.Conta Group: group, Tty: c.Config.Tty, MemoryLimit: c.HostConfig.Memory, - CPULimit: CPULimit, + CPULimit: float64(c.HostConfig.NanoCPUs) / 1e9, FullyLoaded: true, }