kswapd:s의 수는 어떻게 결정됩니까?

kswapd:s의 수는 어떻게 결정됩니까?

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                                        

kswapds 실행 횟수는 어떻게 결정되나요?

답변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

관련 정보