bash - 'top' 中的 Faults 列是什么?

标签 bash terminal page-fault

我正在尝试下载 Xcode(到 El Capitan 版本),它似乎卡住了。当我运行“top”时,我看到一个名为“storedownloadd”的进程,“STATE”列在休眠、卡住和运行之间交替。 “FAULTS”的数字快速增加,后面有一个加号。 “FAULTS”列现在超过 400,000 条并且还在增加。除了“top”之外,我看不到任何下载事件的迹象。这是否表明有什么不对劲?这是一个屏幕截图:

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 报告 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 中的内存页面上的地址,则会发生页面错误。当这种情况发生时,虚拟内存系统调用一个特殊的页面错误处理程序来立即响应错误。页面错误处理程序停止代码的执行,定位物理内存的空闲页面,从磁盘加载包含所需数据的页面,更新页表,最后将控制权返回给程序——然后程序可以正常访问内存地址.此过程称为分页。

根据尝试执行的代码和系统上的当前内存可用性,轻微页面错误可能很常见,但是,也有不同的级别需要注意(次要、主要、无效),这些级别在更多详细信息,请访问以下链接。

Apple : About The Virtual Memory System

Wikipedia : Page Fault

Stackoverflow.com : page-fault

关于bash - 'top' 中的 Faults 列是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144595/

相关文章:

bash - 如何在 Bash 中迭代关联数组

c - 零填充需求是如何在 Linux 内核中实现的,我可以在哪里禁用它?

bash - xargs 并剪切 : getting `cut` fields of a csv to bash variable

linux - elif 的语法错误

mysql - 如何将复杂的 linux 终端命令的输出插入到 mysql 数据库表中

linux - 在终端 CLI 或 shell 脚本中,我想计算多个文件的行数并将行数写在每个文件的第一行

c - 如何为 mmap() 禁用写时复制和按需填零

performance - Meltdown 缓解与 `calloc()` s CoW "lazy allocation"相结合,是否意味着 calloc() 分配的内存会受到性能影响?

bash - 如何通过Bash中的curl从谷歌驱动器下载大文件?

c - 从 C 程序执行终端