kswapd0은 CPU에서 99.9 %를 차지하고 있습니다. 게임에서 문제가 발생하고 6 분 후에 처음으로 사라 졌을 때 현재 약 20 분 동안 문제가 발생했습니다. 이 문제는 어떻게 해결되며 무엇이 원인입니까?
kswapd0은 CPU에서 99.9 %를 차지하고 있습니다. 게임에서 문제가 발생하고 6 분 후에 처음으로 사라 졌을 때 현재 약 20 분 동안 문제가 발생했습니다. 이 문제는 어떻게 해결되며 무엇이 원인입니까?
답변:
kswapd0 프로세스는 가상 메모리를 관리하는 프로세스입니다. 귀하의 기계 한다 RAM, SWAP, 그리고 HDD / SSD에 EXT4 있습니다. ext4는 모든 것이 저장되는 위치이며 RAM보다 액세스 속도가 항상 느립니다. RAM은 프로그램이 정보에 빠르게 액세스 할 수있는 반쯤 실행되는 공간과 같습니다. 대부분의 컴퓨터에는 최소 4GB의 RAM이 있으며 정상적인 조건에서는 충분합니다. 그러나 게임을 할 때 RAM 공간이 부족하여 SWAP이 시작될 수 있습니다.
SWAP는 EXT4 옆의 HDD / SSD에있는 가짜 RAM입니다. EXT4보다 빠르게 액세스 할 수 있지만 실제 RAM보다 훨씬 느립니다. 메모리가 부족한 경우 kswapd0은 사용하지 않거나 사용하지 않는 프로그램을 다른 프로그램만큼 SWAP으로 이동하여 해당 프로세스에 심각한 지연을 발생시킵니다. 게임에 5GB RAM이 필요한 경우 LEAST의 1GB가 SWAP에 있습니다. 즉, 해당 정보에 액세스하려고하면 정보를 얻기 위해 더 오래 기다려야합니다.
이 전체 프로세스는 극단적 인 CPU 사용으로 인해 SWAP 및 RAM으로 정보를 이동하고 동시에 정보 요청을 처리합니다. 이 문제를 해결하는 방법?
RAM이 완전히 부족한 경우 kswapd0에게 SWAP으로 만 이동하도록 지시하십시오. 이것은 SWAP 문제를 해결하는 가장 효과적인 단일 방법입니다. 운영
echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf
SWAP를 사용해야 0
하는 비율이 어디에서 남았 100
는가 (0 % RAM이 남아 있으면 SWAP가 데이터를 가져 오기 시작 함) gedit 또는 nano 등을 사용하여 매번이 명령을 끝에 추가하는 대신 원하는대로 /etc/sysctl.conf를 편집 할 수도 있습니다.이 파일은 루트 소유입니다. 재부팅하면 설정됩니다!
그것이 당신이 할 수있는 최선입니다. 다른 사람들은 스왑을 완전히 비활성화 할 수 있다고 말하지만 위험하므로 권장하지 않습니다. 메모리 누수가 있거나 너무 많은 응용 프로그램이 실행중인 경우 전체 시스템이 정지 될 수 있습니다. SWAP이 RAM에 대한 안전 장치라는 것을 알고 계십시오. RAM만큼 빠르거나 효율적이지는 않지만 Window 's Pagefile보다 낫습니다! (같은 목적을 달성)
echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf
. 이 응답으로 작성된 sudo 명령은 대부분의 사용자에게 작동하지 않습니다.
kwapd0
가 사라졌습니다. 감사.
나에게 그것은 때때로 VMware vm에서 실행되는 커널 3.19.0-50-generic (및 이전)이있는 Ubuntu 14.04에서 발생합니다. 나는 단서가 없으며 무엇이 나타나게 되었습니까?
top
보여줍니다 :
# top
top - 09:49:35 up 5 days, 18:35, 1 user, load average: 1.00, 1.00, 0.99
Tasks: 219 total, 2 running, 217 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 25.0 sy, 0.0 ni, 74.7 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem: 3028784 total, 1874468 used, 1154316 free, 1010276 buffers
KiB Swap: 15624188 total, 3032 used, 15621156 free. 234928 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
52 root 20 0 0 0 0 R 99.7 0.0 122:15.21 kswapd0
3 root 20 0 0 0 0 S 0.3 0.0 0:29.86 ksoftirqd/0
7 root 20 0 0 0 0 S 0.3 0.0 9:49.47 rcu_sched
재부팅으로 문제가 일시적으로 해결되었습니다.
내 시스템의 동일한 설정이있는 serverfault (kswapd는 종종 100 % CPU를 사용 합니다)에 대한 답변을 따릅니다 .
# cat /proc/sys/vm/swappiness
60
# cat /proc/sys/vm/vfs_cache_pressure
100
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
해결책은 실제로 # echo 1 > /proc/sys/vm/drop_caches
다음과 같습니다.
# cat /proc/sys/vm/drop_caches
0
# echo 1 > /proc/sys/vm/drop_caches
# cat /proc/sys/vm/drop_caches
1
이제 괜찮습니다.
# top
top - 10:08:58 up 5 days, 18:55, 1 user, load average: 0.72, 0.95, 0.98
Tasks: 220 total, 1 running, 219 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 3028784 total, 681704 used, 2347080 free, 2916 buffers
KiB Swap: 15624188 total, 3032 used, 15621156 free. 81924 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9 root 20 0 0 0 0 S 0.3 0.0 14:10.40 rcuos/0
1 root 20 0 45652 8124 2888 S 0.0 0.3 1:54.98 init
그러나 실제 이유는 아직 알려지지 않았기 때문에 그물에 대한 적절한 설명을하지 않았으므로 이것은 영원한 해결책이 아닙니다. 실제로 선택된 답변 은 영구적 인 해결책이 될 수 있습니다. 재부팅 (sysctl을 적용하기 위해)이 항상 가능한 것은 아니기 때문에 나중에 참조 할 수 있도록 이것을 추가하고 싶었습니다.
또 다른 해결책은 THP를 madvice
또는 로 설정하는 것입니다 never
( 그의 대답에 대한 poige의 의견 , "/ sys / kernel / mm / transparent_hugepage / enabled" 및 THP (Transparent Huge Pages 비활성화) 에 대한 MongoDB 매뉴얼 참조 방법 참조 )
"영구적 인"솔루션으로 cron 작업으로 다음 배치를 설정했습니다.
#!/bin/bash
## run as cron, thus no $PATH, thus need to define all absolute paths
top=/usr/bin/top
grep=/bin/grep
top=$($top -bn1 -o \%CPU -u0 | $grep -m2 -E "%CPU|kswapd0")
IFS='
'
set -f
i=0
for line in $top
do
#echo $i $line
if ! (( i++ ))
then
pos=${line%%%CPU*}
pos=${#pos}
#echo $pos
else
cpu=${line:(($pos-1)):3}
cpu=${cpu// /}
#echo $cpu
fi
done
[[ -n $cpu ]] && \
(( $cpu >= 90 )) \
&& echo 1 > /proc/sys/vm/drop_caches \
&& echo "$$ $0: cache dropped (kswapd0 %CPU=$cpu)" >&2 \
&& exit 1
exit 0
호출
# m h dom mon dow command
* * * * * /bin/bash /path/to/batch/drop_caches.sh >> /var/log/syslog 2>&1