'top' 中的故障列是什么?
What is the Faults column in 'top'?
我正在尝试下载 Xcode(到 El Capitan 版本),它似乎卡住了。当我 运行 'top' 时,我看到一个名为 'storedownloadd' 的进程,并且 "STATE" 列在休眠、卡住和 运行ning 之间交替。 'FAULTS' 有一个快速增加的数字,后面有一个加号。 'FAULTS' 列现在超过 400,000 并且还在增加。除了 'top',我没有看到 activity 下载的迹象。这是否表明有什么不对劲?这是一个屏幕截图:
Processes: 203 total, 2 running, 10 stuck, 191 sleeping, 795 threads 11:48:14
Load Avg: 4.72, 3.24, 1.69 CPU usage: 56.54% user, 6.41% sys, 37.3% idle SharedLibs: 139M resident, 19M data, 20M linkedit. MemRegions: 18620 total, 880M resident, 92M private, 255M shared. PhysMem: 7812M used (922M wired), 376M unused.
VM: 564G vsize, 528M framework vsize, 0(0) swapins, 512(0) swapouts. Networks: packets: 122536/172M in, 27316/2246K out. Disks: 78844/6532M read, 240500/6746M written.
PID COMMAND %CPU TIME #TH #WQ #PORT MEM PURG CMPRS PGRP PPID STATE BOOSTS %CPU_ME %CPU_OTHRS UID FAULTS COW MSGSENT MSGRECV SYSBSD SYSMACH
354 storedownloadd 0.3 00:47.58 16 5 200 255M 0B 0B 354 1 sleeping *3[1] 155.53838 0.00000 501 412506+ 54329 359852+ 6620+ 2400843+ 1186426+
57 UserEventAgent 0.0 00:00.35 22 17 378 4524K+ 0B 0B 57 1 sleeping *0[1] 0.23093 0.00000 0 7359+ 235 15403+ 7655+ 24224+ 17770
384 Terminal 3.3 00:12.02 10 4 213 34M+ 12K 0B 384 1 sleeping *0[42] 0.11292 0.04335 501 73189+ 482 31076+ 9091+ 1138809+ 72076+
当 top
报告故障时,它指的是 "page faults",更具体地说:
The number of major page faults that have occurred for a task. A page
fault occurs when a process attempts to read from or write to a
virtual page that is not currently present in its address space. A
major page fault is when disk access is involved in making that page
available.
如果应用程序试图访问当前不在物理 RAM 中的内存页面上的地址,则会发生页面错误。当这种情况发生时,虚拟内存系统调用一个特殊的页面错误处理程序来立即响应错误。页面错误处理程序停止代码执行,找到物理内存的空闲页面,从磁盘加载包含所需数据的页面,更新页面 table,最后 returns 控制程序 —然后可以正常访问内存地址。此过程称为分页。
根据尝试执行的代码和系统上的当前内存可用性,轻微页面错误可能很常见,但是,也需要注意不同的级别(次要、主要、无效),它们是在下面的链接中有更详细的描述。
我正在尝试下载 Xcode(到 El Capitan 版本),它似乎卡住了。当我 运行 'top' 时,我看到一个名为 'storedownloadd' 的进程,并且 "STATE" 列在休眠、卡住和 运行ning 之间交替。 'FAULTS' 有一个快速增加的数字,后面有一个加号。 'FAULTS' 列现在超过 400,000 并且还在增加。除了 'top',我没有看到 activity 下载的迹象。这是否表明有什么不对劲?这是一个屏幕截图:
Processes: 203 total, 2 running, 10 stuck, 191 sleeping, 795 threads 11:48:14
Load Avg: 4.72, 3.24, 1.69 CPU usage: 56.54% user, 6.41% sys, 37.3% idle SharedLibs: 139M resident, 19M data, 20M linkedit. MemRegions: 18620 total, 880M resident, 92M private, 255M shared. PhysMem: 7812M used (922M wired), 376M unused.
VM: 564G vsize, 528M framework vsize, 0(0) swapins, 512(0) swapouts. Networks: packets: 122536/172M in, 27316/2246K out. Disks: 78844/6532M read, 240500/6746M written.
PID COMMAND %CPU TIME #TH #WQ #PORT MEM PURG CMPRS PGRP PPID STATE BOOSTS %CPU_ME %CPU_OTHRS UID FAULTS COW MSGSENT MSGRECV SYSBSD SYSMACH
354 storedownloadd 0.3 00:47.58 16 5 200 255M 0B 0B 354 1 sleeping *3[1] 155.53838 0.00000 501 412506+ 54329 359852+ 6620+ 2400843+ 1186426+
57 UserEventAgent 0.0 00:00.35 22 17 378 4524K+ 0B 0B 57 1 sleeping *0[1] 0.23093 0.00000 0 7359+ 235 15403+ 7655+ 24224+ 17770
384 Terminal 3.3 00:12.02 10 4 213 34M+ 12K 0B 384 1 sleeping *0[42] 0.11292 0.04335 501 73189+ 482 31076+ 9091+ 1138809+ 72076+
当 top
报告故障时,它指的是 "page faults",更具体地说:
The number of major page faults that have occurred for a task. A page fault occurs when a process attempts to read from or write to a virtual page that is not currently present in its address space. A major page fault is when disk access is involved in making that page available.
如果应用程序试图访问当前不在物理 RAM 中的内存页面上的地址,则会发生页面错误。当这种情况发生时,虚拟内存系统调用一个特殊的页面错误处理程序来立即响应错误。页面错误处理程序停止代码执行,找到物理内存的空闲页面,从磁盘加载包含所需数据的页面,更新页面 table,最后 returns 控制程序 —然后可以正常访问内存地址。此过程称为分页。
根据尝试执行的代码和系统上的当前内存可用性,轻微页面错误可能很常见,但是,也需要注意不同的级别(次要、主要、无效),它们是在下面的链接中有更详细的描述。