Ubuntu Server 15.10,进程不允许使用所有物理内存,kswapd0使用100%CPU

前端之家收集整理的这篇文章主要介绍了Ubuntu Server 15.10,进程不允许使用所有物理内存,kswapd0使用100%CPU前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有64G DRAM的24核服务器,它运行的是Ubuntu Server 15.10.我在交换和物理内存使用方面遇到了一些奇怪的行为.在我将Ubuntu升级到15.10之前,我从未遇到过这个问题.

你可以在’顶部’看到我的问题:

top - 18:52:09 up 1 day,2:25,3 users,load average: 1.64,1.30,1.18
Tasks: 525 total,2 running,523 sleeping,0 stopped,0 zombie
%cpu(s): 0.3 us,1.3 sy,0.0 ni,97.0 id,1.4 wa,0.0 hi,0.0 si,0.0 st
KiB Mem: 65937528 total,37526160 used,28411368 free,14396 buffers
KiB Swap: 67071996 total,67071724 used,272 free. 104304 cached Mem

PID USER PR NI VIRT RES SHR S %cpu %MEM TIME+ COMMAND 
363 root 20 0 0 0 0 R 100.0 0.0 324:02.98 kswapd0 
6725 theosib 20 0 99.398g 0.034t 8920 D 12.0 55.1 59:08.71 common_shell_ex

有一个用户登录(我),我有一个使用大量虚拟内存的进程.但是,某些东西限制在大约一半的物理内存,而交换分区基本上是满的.我已经看过这些进程(Synopsys Design Compiler)运行,并且在交换填充之前它们不会突破50%的标记.另一个奇怪的事情是kswapd0使用非常高(通常是100%)的cpu. AFAIK,kswapd0应该受I / O限制,因此不会占用大量cpu时间.

我看看是否有任何限制,但ulimit说不然:

$ulimit -a
core file size (blocks,-c) 0
data seg size (kbytes,-d) unlimited
scheduling priority (-e) 0
file size (blocks,-f) unlimited
pending signals (-i) 257447
max locked memory (kbytes,-l) 64
max memory size (kbytes,-m) unlimited
open files (-n) 1024
pipe size (512 bytes,-p) 8
POSIX message queues (bytes,-q) 819200
real-time priority (-r) 0
stack size (kbytes,-s) 8192
cpu time (seconds,-t) unlimited
max user processes (-u) 257447
virtual memory (kbytes,-v) unlimited
file locks (-x) unlimited

我也试过将swappiness设置为10,但这没有帮助.

任何人都可以帮我弄清楚为什么这个系统行为不端?

24核服务器几乎肯定意味着双插槽,所以你几乎肯定会遇到 NUMA限制 – 内核阻止你使用分配给另一个插槽的内存,除非绝对必要.在套接字之间传输数据比从同一套接字上的RAM访问数据要慢得多,并且通常会使两个套接字都停止,因此只能在最严峻的情况下保留它.

你没有在早期的Ubuntu版本上遇到它可能只是因为内核在版本之间的某个时候改进了它的NUMA处理.

猜你在找的Ubuntu相关文章