![kswapd:s의 수는 어떻게 결정됩니까?](https://linux55.com/image/174373/kswapd%3As%EC%9D%98%20%EC%88%98%EB%8A%94%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EA%B2%B0%EC%A0%95%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
kswapd
이 시스템에서는 단 8 초 밖에 걸리지 않습니다 .
top - 00:10:37 up 3:18, 5 users, load average: 60.96, 61.95, 58.34
Tasks: 4318 total, 47 running, 2433 sleeping, 1836 stopped, 2 zombie
%Cpu(s): 0.2 us, 80.9 sy, 4.4 ni, 11.6 id, 0.2 wa, 0.0 hi, 2.8 si, 0.0 st
GiB Mem : 472.4 total, 1.2 free, 470.5 used, 0.7 buff/cache
GiB Swap: 16681.0 total, 14502.9 free, 2178.1 used. 0.1 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
437 root 20 0 0 0 0 R 97.6 0.0 54:16.04 kswapd3
439 root 20 0 0 0 0 R 89.9 0.0 50:29.51 kswapd5
436 root 20 0 0 0 0 R 88.7 0.0 46:20.85 kswapd2
441 root 20 0 0 0 0 R 87.5 0.0 50:12.31 kswapd7
434 root 20 0 0 0 0 R 82.8 0.0 41:19.56 kswapd0
438 root 20 0 0 0 0 R 81.6 0.0 51:17.61 kswapd4
435 root 20 0 0 0 0 R 76.3 0.0 44:02.43 kswapd1
440 root 20 0 0 0 0 R 74.2 0.0 44:34.82 kswapd6
1005926 tange 39 19 789232 778236 1448 S 34.1 0.2 0:06.77 swapout
1009124 tange 39 19 780016 769156 1576 S 32.6 0.2 0:03.25 swapout
kswapd
s 실행 횟수는 어떻게 결정되나요?
답변1
가지다kswapd
메모리 노드당 하나,즉연결된 메모리가 있는 노드(NUMA 의미).
답변2
/proc/sys/vm/kswapd_threads를 더 높은 값으로 설정해 보세요. 상한은 MAX_KSWAPD_THREADS
커널 kern_src/include/linux/mmzone.h
컴파일 중에 결정되므로 하드코딩됩니다.
~ # sysctl vm.kswapd_threads=<int>
내 장치에서는 최대 16개의 kswapd 스레드를 생성할 수 있습니다.
┌──(root@termux)-[~]
└─# pgrep -fa kswapd
153 [kswapd0:0]
┌──(root@termux)-[~]
└─# sysctl vm.kswapd_threads=16
vm.kswapd_threads = 16
┌──(root@termux)-[~]
└─# pgrep -fa kswapd
153 [kswapd0:0]
8058 [kswapd0:1]
8059 [kswapd0:2]
8060 [kswapd0:3]
8061 [kswapd0:4]
8062 [kswapd0:5]
8063 [kswapd0:6]
8064 [kswapd0:7]
8065 [kswapd0:8]
8066 [kswapd0:9]
8067 [kswapd0:10]
8068 [kswapd0:11]
8069 [kswapd0:12]
8070 [kswapd0:13]
8071 [kswapd0:14]
8072 [kswapd0:15]
┌──(root@termux)-[~]
└─# sysctl vm.kswapd_threads=17
sysctl: setting key "vm.kswapd_threads": Invalid argument