Merge pull request #5123 from vegansk/cpuload_overflow

Fix overflow when casting int64 to int in cpuload.nim
This commit is contained in:
Andreas Rumpf 2016-12-18 02:07:56 +01:00 • committed by GitHub
commit 19edb206d9

View file

@ -45,12 +45,12 @@ proc advice*(s: var ThreadPoolState): ThreadPoolAdvice =
procKernelDiff = procKernel - s.prevProcKernel procKernelDiff = procKernel - s.prevProcKernel
procUserDiff = procUser - s.prevProcUser procUserDiff = procUser - s.prevProcUser
sysTotal = int(sysKernelDiff + sysUserDiff) sysTotal = sysKernelDiff + sysUserDiff
procTotal = int(procKernelDiff + procUserDiff) procTotal = procKernelDiff + procUserDiff
# total CPU usage < 85% --> create a new worker thread. # total CPU usage < 85% --> create a new worker thread.
# Measurements show that 100% and often even 90% is not reached even # Measurements show that 100% and often even 90% is not reached even
# if all my cores are busy. # if all my cores are busy.
if sysTotal == 0 or procTotal / sysTotal < 0.85: if sysTotal == 0 or procTotal.float / sysTotal.float < 0.85:
result = doCreateThread result = doCreateThread
s.prevSysKernel = sysKernel s.prevSysKernel = sysKernel
s.prevSysUser = sysUser s.prevSysUser = sysUser