我在GCP VM的分离屏幕上运行Keras脚本(n1-standard-16(16个vCPU,60 GB内存),并且符合GCP的CPU使用率徘徊在30%左右。我听说python 32位最多只能使用4GB的内存,但是我检查了一下,我使用的是64位64位的Python。我已经运行顶级,输出低于。
有人可以解释为什么脚本无法更多地利用VM资源容量吗?此外,有人可以解释为什么CPU显示超过100%?
top - 10:40:45 up 3:47, 1 user, load average: 4.83, 4.47, 4.47
Tasks: 184 total, 1 running, 183 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.2 us, 8.6 sy, 0.0 ni, 74.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 61851636 total, 4809744 free, 55865760 used, 1176132 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 5384248 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3076 delaicog 20 0 56.465g 0.052t 107064 S 453.5 89.8 350:51.07 python3
3511 delaicog 20 0 42956 3708 2944 R 0.3 0.0 0:00.19 top
答案 0 :(得分:0)
要了解您的CPU显示为+ 100%的原因,您必须查看平均负载,即:
load average: 4.83, 4.47, 4.47
这三个值分别代表最后1分钟,5分钟和15分钟的平均负载。
平均负载为1.00表示您正在使用CPU的容量,而不是更少,并且不需要更多。这意味着您的CPU容量完全符合您的需求。
当你开始超过1.00时,这意味着你需要更多处理能力。此时,工作开始堆积并排队,系统性能受到影响。
正如您所见,平均负载约为4意味着,要执行所有过程,您需要的处理能力大约为x4。通过将CPU负载显示为400%来表示在%CPU上。
如果你的脚本不是多线程的话,你有16个vCPU并不重要,所以你现在的瓶颈就是每个核心的性能。
这也是你没有使用更多RAM的原因,即使它可用。没有必要,所有系统都在等待处理器完成计算,即使有更多可用资源(更多核心,更多RAM),也不会因为不需要而使用它们。