초당 약 200,000개의 페이지 오류가 발생하는데, 이는 엄청난 숫자이며 전체 시스템 성능에 영향을 미칩니다. 16G RAM이 있는 MBP를 사용하고 있습니다.
이렇게 많은 페이지 부재를 (지속적으로) 처리하는 방법은 무엇입니까? 내 말은, 그 이유를 찾는 것이 가능합니까(예: 어떤 프로세스가 이 문제를 일으키는지, 그 이유는 무엇입니까)?
예를 들어:
$ sudo vm_stat 1
Mach Virtual Memory Statistics: (page size of 4096 bytes)
free active specul inactive throttle wired prgable faults copy 0fill reactive purged file-backed anonymous cmprssed cmprssor dcomprs comprs pageins pageout swapins swapouts
4917 96838 529 97567 0 3289215 2 11428M 127346K 5267290K 2537359K 215040K 47481 147453 11108999 703646 3631740K 3986806K 125027K 3038713 4551661K 4575495K
4728 119600 514 119225 0 3290072 0 197571 160 2067 28142 2 47479 191860 11063976 658555 153524 108572 31 0 11145 18981
4165 104525 514 104919 0 3288821 0 130758 0 2229 74497 12 47449 162509 11094522 689295 90301 121063 3 3 18085 7894
4648 106152 463 105365 0 3289210 0 169256 268 8150 73677 6 47404 164576 11097078 686991 122692 126220 0 0 12751 15474
5364 105849 246 101327 0 3291998 0 194376 81 24019 43351 10 47189 160233 11103191 687904 121794 129662 72 0 14705 14031
4800 131711 234 126573 0 3289384 0 272238 0 4346 110454 0 47177 211341 11035585 639095 167782 108490 0 0 10628 23480
3813 114535 203 114136 0 3289283 0 235409 0 3292 39228 6 47149 181725 11065977 670501 153957 184877 12 2 18041 17254
4568 115828 104 116790 0 3289299 0 211943 0 2536 81178 1 46680 186042 11061206 665872 139337 134989 0 0 18848 19316
3273 95211 105 95156 0 3289239 0 223742 268 2123 40588 4 46670 143802 11103048 708970 156600 198575 0 0 22910 8
$ top -n1 | head
Processes: 453 total, 8 running, 16 stuck, 429 sleeping, 2870 threads
2016/07/21 15:06:33
Load Avg: 7.95, 9.09, 9.22
CPU usage: 9.17% user, 41.17% sys, 49.64% idle
SharedLibs: 54M resident, 8520K data, 3092K linkedit.
MemRegions: 307835 total, 4421M resident, 11M private, 143M shared.
PhysMem: 16G used (13G wired), 4880K unused.
VM: 4577G vsize, 528M framework vsize, 4619730480(0) swapins, 4643542587(0) swapouts.
Networks: packets: 67336466/41G in, 59785188/11G out.
Disks: 620736722/18T read, 615258201/18T written.
$ uptime
15:25pm up 17 days 23:31, 48 users, load average: 7.95, 9.09, 9.22
$ sudo fs_usage | grep -e PgIn -e PgOut
15:25:02 PgOut[ST1P] 0.000146 W kernel_task
15:25:02 PgOut[ST1P] 0.000241 W kernel_task
15:25:02 PgOut[ST1P] 0.000234 W kernel_task
15:25:02 PgOut[ST1P] 0.000317 W kernel_task
15:25:02 PgOut[ST1P] 0.000333 W kernel_task
15:25:02 PgOut[ST1P] 0.000252 W kernel_task
15:25:02 PgOut[ST1P] 0.000248 W kernel_task
15:25:02 PgOut[ST1P] 0.000240 W kernel_task
15:25:02 PgOut[ST1P] 0.000236 W kernel_task
15:25:02 PgOut[ST1P] 0.000261 W kernel_task
15:25:02 PgOut[ST1P] 0.000257 W kernel_task
15:25:02 PgOut[ST1P] 0.000253 W kernel_task
15:25:02 PgOut[ST1P] 0.000289 W kernel_task
15:25:02 PgOut[ST1P] 0.000159 W kernel_task
15:25:02 PgOut[ST1P] 0.000120 W kernel_task
답변1
커널이 이를 지원하는 경우 각 페이지 오류에 대한 스택을 기록해 볼 수 있습니다. 이 명령을 실행하고 몇 초 후에 중단합니다.
sudo perf record -e page-faults -ag
perf.data
시각화에 사용할 수 있는 대용량 바이너리 파일이 생성됩니다.
perf report
perf
그것은 거대한 주제입니다. 당신은부터 시작할 수 있습니다지도 시간.