Java 为什么我的Opteron内核的容量只有75%呢?(25%CPU空闲)

Java 为什么我的Opteron内核的容量只有75%呢?(25%CPU空闲),java,numa,Java,Numa,我们刚刚推出了一款功能强大的32核AMD Opteron服务器,容量为128Gb。我们有2个6272 CPU,每个CPU有16个内核。我们正在30个线程上运行一个大型的长时间运行的java任务。我们已经开启了Linux和java的NUMA优化。我们的Java线程主要使用该线程专用的对象,有时读取其他线程将读取的内存,有时写入或锁定共享对象 我们无法解释为什么CPU核心25%空闲。下面是“顶部”的转储: top-23:06:38最多1天23分钟3个用户平均负载:10.84,10.27,9.62 任

我们刚刚推出了一款功能强大的32核AMD Opteron服务器,容量为128Gb。我们有2个6272 CPU,每个CPU有16个内核。我们正在30个线程上运行一个大型的长时间运行的java任务。我们已经开启了Linux和java的NUMA优化。我们的Java线程主要使用该线程专用的对象,有时读取其他线程将读取的内存,有时写入或锁定共享对象

我们无法解释为什么CPU核心25%空闲。下面是“顶部”的转储:

top-23:06:38最多1天23分钟3个用户平均负载:10.84,10.27,9.62 任务:总共676项,1项运行,675项睡眠,0项停止,0项僵尸 Cpu:64.5%us、1.3%sy、0.0%ni、32.9%id、1.3%wa、0.0%hi、0.0%si、0.0%st 内存:总计132138168k,使用131652664k,空闲485504k,缓冲区92340k 交换:总计5701624k,使用230252k,空闲5471372k,缓存13444344k ... 排名前22:37:39上升23:54,3个用户,平均负载:7.83、8.70、9.27 任务:总共678项,1项运行,677项睡眠,0项停止,0项僵尸 Cpu0:75.8%us、2.0%sy、0.0%ni、22.2%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu1:77.2%us、1.3%sy、0.0%ni、21.5%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu2:77.3%us、1.0%sy、0.0%ni、21.7%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu3:77.8%us、1.0%sy、0.0%ni、21.2%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu4:76.9%us、2.0%sy、0.0%ni、21.1%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu5:76.3%us、2.0%sy、0.0%ni、21.7%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu6:12.6%us、3.0%sy、0.0%ni、84.4%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu7:8.6%us、2.0%sy、0.0%ni、89.4%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu8:77.0%us、2.0%sy、0.0%ni、21.1%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu9:77.0%us、2.0%sy、0.0%ni、21.1%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu10:77.6%us、1.7%sy、0.0%ni、20.8%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu11:75.7%us、2.0%sy、0.0%ni、21.4%id、1.0%wa、0.0%hi、0.0%si、0.0%st Cpu12:76.6%us、2.3%sy、0.0%ni、21.1%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu13:76.6%us、2.3%sy、0.0%ni、21.1%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu14:76.2%us、2.6%sy、0.0%ni、15.9%id、5.3%wa、0.0%hi、0.0%si、0.0%st Cpu15:76.6%us、2.0%sy、0.0%ni、21.5%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu16:73.6%us、2.6%sy、0.0%ni、23.8%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu17:74.5%us、2.3%sy、0.0%ni、23.2%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu18:73.9%us、2.3%sy、0.0%ni、23.8%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu19:72.9%us、2.6%sy、0.0%ni、24.4%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu20:72.8%us、2.6%sy、0.0%ni、24.5%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu21:72.7%us、2.3%sy、0.0%ni、25.0%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu22:72.5%us、2.6%sy、0.0%ni、24.8%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu23:73.0%us、2.3%sy、0.0%ni、24.7%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu24:74.7%us、2.7%sy、0.0%ni、22.7%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu25:74.5%us、2.6%sy、0.0%ni、22.8%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu26:73.7%us、2.0%sy、0.0%ni、24.3%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu27:74.1%us,2.3%sy,0.0%ni,23.6%id,0.0%wa,0.0%hi,0.0%si,0.0%st Cpu28:74.1%us,2.3%sy,0.0%ni,23.6%id,0.0%wa,0.0%hi,0.0%si,0.0%st Cpu29:74.0%us、2.0%sy、0.0%ni、24.0%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu30:73.2%us、2.3%sy、0.0%ni、24.5%id、0.0%wa、0.0%hi、0.0%si、0.0%st Cpu31:73.1%us、2.0%sy、0.0%ni、24.9%id、0.0%wa、0.0%hi、0.0%si、0.0%st 内存:总计132138168k,使用131711704k,可用426464k,缓存88336k 交换:总计5701624k,使用229572k,免费5472052k,缓存13745596k PID用户PR NI VIRT RES SHR S%CPU%MEM TIME+命令 13865根20 0 122g 112g 3.1g S 2334.3 89.6 20726:49 java 27139千日元20 0 15428 1728 952 S 2.6 0.0 0:04.21顶部 27161系统管理员20 0 15428 1712 940 R 1.0 0.0 0:00.28顶部 33根20 0 0 0 S 0.3 0.0 0:06.24 ksoftirqd/7 131根20 0 0 0 0 S 0.30 0.0 0:09.52事件/0 1858根20 0 0 0 S 0.3 0.0 1:35.14 kondemand/0 java堆栈的转储确认没有线程在使用锁的少数位置附近,也没有线程在任何磁盘或网络i/o附近

我很难找到“空闲”与“等待”对“top”的明确解释,但我得到的印象是,“空闲”意味着“不再需要运行线程”,但这在我们的例子中没有意义。我们使用的是“Executors.newFixedThreadPool(30)”。有大量任务等待处理,每个任务持续10秒左右


我怀疑这个解释需要对NUMA有很好的理解。当CPU正在等待非本地访问时,您看到的是“空闲”状态吗?如果没有,那么解释是什么?

可能有很多原因:

  • 这可能是线程之间为了访问共享数据而发生的争用。这可能采取锁争用的形式,或者由于读写障碍而产生的额外内存流量,尽管后者不太可能产生这些症状

  • 您正在泄漏工作线程;e、 g.它们偶尔会死亡,而且不会被替换

  • 执行人本身可能存在瓶颈;e、 g.它可能无法通过安排下一个任务来对完成的任务做出足够快的响应

  • 瓶颈可能是垃圾收集器,特别是如果您没有启用并行收集


讨论Java的NUMA增强,并提到支持NUMA的GC开关。试试看。还可以查看该页面上的其他GC调优建议

此问题解释了流程状态:

我认为处理器摘要中“wa”和“空闲”时间的区别在于“wa”表示 top - 23:06:38 up 1 day, 23 min, 3 users, load average: 10.84, 10.27, 9.62 Tasks: 676 total, 1 running, 675 sleeping, 0 stopped, 0 zombie Cpu(s): 64.5%us, 1.3%sy, 0.0%ni, 32.9%id, 1.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 132138168k total, 131652664k used, 485504k free, 92340k buffers Swap: 5701624k total, 230252k used, 5471372k free, 13444344k cached ... top - 22:37:39 up 23:54, 3 users, load average: 7.83, 8.70, 9.27 Tasks: 678 total, 1 running, 677 sleeping, 0 stopped, 0 zombie Cpu0 : 75.8%us, 2.0%sy, 0.0%ni, 22.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 77.2%us, 1.3%sy, 0.0%ni, 21.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu2 : 77.3%us, 1.0%sy, 0.0%ni, 21.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu3 : 77.8%us, 1.0%sy, 0.0%ni, 21.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu4 : 76.9%us, 2.0%sy, 0.0%ni, 21.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu5 : 76.3%us, 2.0%sy, 0.0%ni, 21.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu6 : 12.6%us, 3.0%sy, 0.0%ni, 84.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu7 : 8.6%us, 2.0%sy, 0.0%ni, 89.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu8 : 77.0%us, 2.0%sy, 0.0%ni, 21.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu9 : 77.0%us, 2.0%sy, 0.0%ni, 21.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu10 : 77.6%us, 1.7%sy, 0.0%ni, 20.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu11 : 75.7%us, 2.0%sy, 0.0%ni, 21.4%id, 1.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu12 : 76.6%us, 2.3%sy, 0.0%ni, 21.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu13 : 76.6%us, 2.3%sy, 0.0%ni, 21.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu14 : 76.2%us, 2.6%sy, 0.0%ni, 15.9%id, 5.3%wa, 0.0%hi, 0.0%si, 0.0%st Cpu15 : 76.6%us, 2.0%sy, 0.0%ni, 21.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu16 : 73.6%us, 2.6%sy, 0.0%ni, 23.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu17 : 74.5%us, 2.3%sy, 0.0%ni, 23.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu18 : 73.9%us, 2.3%sy, 0.0%ni, 23.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu19 : 72.9%us, 2.6%sy, 0.0%ni, 24.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu20 : 72.8%us, 2.6%sy, 0.0%ni, 24.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu21 : 72.7%us, 2.3%sy, 0.0%ni, 25.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu22 : 72.5%us, 2.6%sy, 0.0%ni, 24.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu23 : 73.0%us, 2.3%sy, 0.0%ni, 24.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu24 : 74.7%us, 2.7%sy, 0.0%ni, 22.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu25 : 74.5%us, 2.6%sy, 0.0%ni, 22.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu26 : 73.7%us, 2.0%sy, 0.0%ni, 24.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu27 : 74.1%us, 2.3%sy, 0.0%ni, 23.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu28 : 74.1%us, 2.3%sy, 0.0%ni, 23.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu29 : 74.0%us, 2.0%sy, 0.0%ni, 24.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu30 : 73.2%us, 2.3%sy, 0.0%ni, 24.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu31 : 73.1%us, 2.0%sy, 0.0%ni, 24.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 132138168k total, 131711704k used, 426464k free, 88336k buffers Swap: 5701624k total, 229572k used, 5472052k free, 13745596k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 13865 root 20 0 122g 112g 3.1g S 2334.3 89.6 20726:49 java 27139 jayen 20 0 15428 1728 952 S 2.6 0.0 0:04.21 top 27161 sysadmin 20 0 15428 1712 940 R 1.0 0.0 0:00.28 top 33 root 20 0 0 0 0 S 0.3 0.0 0:06.24 ksoftirqd/7 131 root 20 0 0 0 0 S 0.3 0.0 0:09.52 events/0 1858 root 20 0 0 0 0 S 0.3 0.0 1:35.14 kondemand/0