Ubuntu Server 15.10, процессу не разрешено использовать всю физическую память, kswapd0 использует 100% ЦП

У меня 24-ядерный сервер с 64 ГБ DRAM, и он работает под управлением 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), и они не превышают отметку 50%, пока не заполнится своп. И еще одна странность в том, что kswapd0 использует очень высокий (обычно 100%) процессор. AFAIK, kswapd0 должен быть привязан к вводу-выводу и, следовательно, не использовать много процессорного времени.

Я посмотрел, были ли наложены какие-либо ограничения, но 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, но это не помогло.

Может ли кто-нибудь помочь мне выяснить, почему эта система работает неправильно?

4
задан 4 January 2016 в 08:20
1 ответ

24-ядерный сервер почти наверняка означает двойной сокет, поэтому вы почти наверняка столкнетесь с ограничениями NUMA - ядро ​​не позволяет вам использовать память, назначенную для другой сокет, если он не абсолютно необходим. Передача данных между сокетами намного, намного медленнее, чем доступ к ним из ОЗУ на том же сокете, и обычно останавливает оба сокета, так что это то, что нужно зарезервировать только на самые ужасные обстоятельства.

Это в предыдущих выпусках Ubuntu вы не использовали его, вероятно, просто потому, что ядро ​​улучшило обработку NUMA где-то между выпусками.

1
ответ дан 3 December 2019 в 04:09

Теги

Похожие вопросы