目录(?)[-]

  1. 目录
  2. 收集系统信息
    1. 1 进程子目录
    2. 2 内核数据
    3. 14 网络信息
  3. 2 每个进程信息
    1. 1 procpidoom_adj procpidoom_score_adj
    2. 2 procpidoom_score
[plain] view plaincopy
  1. Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
  2. ..............................................................................
  3. Field          Content
  4. pid           process id
  5. tcomm         filename of the executable
  6. state         state (R is running, S is sleeping, D is sleeping in an
  7. uninterruptible wait, Z is zombie, T is traced or stopped)
  8. ppid          process id of the parent process
  9. pgrp          pgrp of the process
  10. sid           session id
  11. tty_nr        tty the process uses
  12. tty_pgrp      pgrp of the tty
  13. flags         task flags
  14. min_flt       number of minor faults
  15. cmin_flt      number of minor faults with child's
  16. maj_flt       number of major faults
  17. cmaj_flt      number of major faults with child's
  18. utime         user mode jiffies
  19. stime         kernel mode jiffies
  20. cutime        user mode jiffies with child's
  21. cstime        kernel mode jiffies with child's
  22. priority      priority level
  23. nice          nice level
  24. num_threads   number of threads
  25. it_real_value (obsolete, always 0)
  26. start_time    time the process started after system boot
  27. vsize         virtual memory size
  28. rss           resident set memory size
  29. rsslim        current limit in bytes on the rss
  30. start_code    address above which program text can run
  31. end_code      address below which program text can run
  32. start_stack   address of the start of the main process stack
  33. esp           current value of ESP
  34. eip           current value of EIP
  35. pending       bitmap of pending signals
  36. blocked       bitmap of blocked signals
  37. sigign        bitmap of ignored signals
  38. sigcatch      bitmap of catched signals
  39. wchan         address where process went to sleep
  40. 0             (place holder)
  41. 0             (place holder)
  42. exit_signal   signal to send to parent thread on exit
  43. task_cpu      which CPU the task is scheduled on
  44. rt_priority   realtime priority
  45. policy        scheduling policy (man sched_setscheduler)
  46. blkio_ticks   time spent waiting for block IO
  47. gtime         guest time of the task in jiffies
  48. cgtime        guest time of the task children in jiffies
  49. start_data    address above which program data+bss is placed
  50. end_data      address below which program data+bss is placed
  51. start_brk     address above which program heap can be expanded with brk()
  52. arg_start     address above which program command line is placed
  53. arg_end       address below which program command line is placed
  54. env_start     address above which program environment is placed
  55. env_end       address below which program environment is placed
  56. exit_code     the thread's exit_code in the form reported by the waitpid system call
  57. ..............................................................................
[plain] view plaincopy
  1. ------------------------------------------------------------------------------
  2. T H E  /proc   F I L E S Y S T E M
  3. ------------------------------------------------------------------------------
  4. /proc/sys         Terrehon Bowden <terrehon@pacbell.net>        October 7 1999
  5. Bodo Bauer <bb@ricochet.net>
  6. 2.4.x update      Jorge Nerin <comandante@zaralinux.com>      November 14 2000
  7. move /proc/sys    Shen Feng <shen@cn.fujitsu.com>       April 1 2009
  8. ------------------------------------------------------------------------------
  9. Version 1.3                                              Kernel version 2.2.12
  10. Kernel version 2.4.0-test11-pre4
  11. ------------------------------------------------------------------------------
  12. fixes/update part 1.1  Stefani Seibold <stefani@seibold.net>       June 9 2009
  13. Table of Contents
  14. -----------------
  15. 0     Preface
  16. 0.1   Introduction/Credits
  17. 0.2   Legal Stuff
  18. 1 Collecting System Information
  19. 1.1   Process-Specific Subdirectories
  20. 1.2   Kernel data
  21. 1.3   IDE devices in /proc/ide
  22. 1.4   Networking info in /proc/net
  23. 1.5   SCSI info
  24. 1.6   Parallel port info in /proc/parport
  25. 1.7   TTY info in /proc/tty
  26. 1.8   Miscellaneous kernel statistics in /proc/stat
  27. 1.9 Ext4 file system parameters
  28. 2 Modifying System Parameters
  29. 3 Per-Process Parameters
  30. 3.1   /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj - Adjust the oom-killer
  31. score
  32. 3.2   /proc/<pid>/oom_score - Display current oom-killer score
  33. 3.3   /proc/<pid>/io - Display the IO accounting fields
  34. 3.4   /proc/<pid>/coredump_filter - Core dump filtering settings
  35. 3.5   /proc/<pid>/mountinfo - Information about mounts
  36. 3.6   /proc/<pid>/comm  & /proc/<pid>/task/<tid>/comm
  37. 3.7   /proc/<pid>/task/<tid>/children - Information about task children
  38. 3.8   /proc/<pid>/fdinfo/<fd> - Information about opened file
  39. 4 Configuring procfs
  40. 4.1   Mount options
  41. ------------------------------------------------------------------------------
  42. Preface
  43. ------------------------------------------------------------------------------
  44. 0.1 Introduction/Credits
  45. ------------------------
  46. This documentation is  part of a soon (or  so we hope) to be  released book on
  47. the SuSE  Linux distribution. As  there is  no complete documentation  for the
  48. /proc file system and we've used  many freely available sources to write these
  49. chapters, it  seems only fair  to give the work  back to the  Linux community.
  50. This work is  based on the 2.2.*  kernel version and the  upcoming 2.4.*. I'm
  51. afraid it's still far from complete, but we  hope it will be useful. As far as
  52. we know, it is the first 'all-in-one' document about the /proc file system. It
  53. is focused  on the Intel  x86 hardware,  so if you  are looking for  PPC, ARM,
  54. SPARC, AXP, etc., features, you probably  won't find what you are looking for.
  55. It also only covers IPv4 networking, not IPv6 nor other protocols - sorry. But
  56. additions and patches  are welcome and will  be added to this  document if you
  57. mail them to Bodo.
  58. We'd like  to  thank Alan Cox, Rik van Riel, and Alexey Kuznetsov and a lot of
  59. other people for help compiling this documentation. We'd also like to extend a
  60. special thank  you to Andi Kleen for documentation, which we relied on heavily
  61. to create  this  document,  as well as the additional information he provided.
  62. Thanks to  everybody  else  who contributed source or docs to the Linux kernel
  63. and helped create a great piece of software... :)
  64. If you  have  any comments, corrections or additions, please don't hesitate to
  65. contact Bodo  Bauer  at  bb@ricochet.net.  We'll  be happy to add them to this
  66. document.
  67. The   latest   version    of   this   document   is    available   online   at
  68. http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html
  69. If  the above  direction does  not works  for you,  you could  try the  kernel
  70. mailing  list  at  linux-kernel@vger.kernel.org  and/or try  to  reach  me  at
  71. comandante@zaralinux.com.
  72. 0.2 Legal Stuff
  73. ---------------
  74. We don't  guarantee  the  correctness  of this document, and if you come to us
  75. complaining about  how  you  screwed  up  your  system  because  of  incorrect
  76. documentation, we won't feel responsible...
  77. ------------------------------------------------------------------------------
  78. CHAPTER 1: COLLECTING SYSTEM INFORMATION
  79. ------------------------------------------------------------------------------
  80. ------------------------------------------------------------------------------
  81. In This Chapter
  82. ------------------------------------------------------------------------------
  83. * Investigating  the  properties  of  the  pseudo  file  system  /proc and its
  84. ability to provide information on the running Linux system
  85. * Examining /proc's structure
  86. * Uncovering  various  information  about the kernel and the processes running
  87. on the system
  88. ------------------------------------------------------------------------------
  89. The proc  file  system acts as an interface to internal data structures in the
  90. kernel. It  can  be  used to obtain information about the system and to change
  91. certain kernel parameters at runtime (sysctl).
  92. First, we'll  take  a  look  at the read-only parts of /proc. In Chapter 2, we
  93. show you how you can use /proc/sys to change settings.
  94. 1.1 Process-Specific Subdirectories
  95. -----------------------------------
  96. The directory  /proc  contains  (among other things) one subdirectory for each
  97. process running on the system, which is named after the process ID (PID).
  98. The link  self  points  to  the  process reading the file system. Each process
  99. subdirectory has the entries listed in Table 1-1.
  100. Table 1-1: Process specific entries in /proc
  101. ..............................................................................
  102. File       Content
  103. clear_refs Clears page referenced bits shown in smaps output
  104. cmdline    Command line arguments
  105. cpu        Current and last cpu in which it was executed   (2.4)(smp)
  106. cwd        Link to the current working directory
  107. environ    Values of environment variables
  108. exe        Link to the executable of this process
  109. fd     Directory, which contains all file descriptors
  110. maps       Memory maps to executables and library files    (2.4)
  111. mem        Memory held by this process
  112. root       Link to the root directory of this process
  113. stat       Process status
  114. statm      Process memory status information
  115. status     Process status in human readable form
  116. wchan      If CONFIG_KALLSYMS is set, a pre-decoded wchan
  117. pagemap    Page table
  118. stack      Report full stack trace, enable via CONFIG_STACKTRACE
  119. smaps      a extension based on maps, showing the memory consumption of
  120. each mapping and flags associated with it
  121. ..............................................................................
  122. For example, to get the status information of a process, all you have to do is
  123. read the file /proc/PID/status:
  124. >cat /proc/self/status
  125. Name:   cat
  126. State:  R (running)
  127. Tgid:   5452
  128. Pid:    5452
  129. PPid:   743
  130. TracerPid:      0                     (2.4)
  131. Uid:    501     501     501     501
  132. Gid:    100     100     100     100
  133. FDSize: 256
  134. Groups: 100 14 16
  135. VmPeak:     5004 kB
  136. VmSize:     5004 kB
  137. VmLck:         0 kB
  138. VmHWM:       476 kB
  139. VmRSS:       476 kB
  140. VmData:      156 kB
  141. VmStk:        88 kB
  142. VmExe:        68 kB
  143. VmLib:      1412 kB
  144. VmPTE:        20 kb
  145. VmSwap:        0 kB
  146. Threads:        1
  147. SigQ:   0/28578
  148. SigPnd: 0000000000000000
  149. ShdPnd: 0000000000000000
  150. SigBlk: 0000000000000000
  151. SigIgn: 0000000000000000
  152. SigCgt: 0000000000000000
  153. CapInh: 00000000fffffeff
  154. CapPrm: 0000000000000000
  155. CapEff: 0000000000000000
  156. CapBnd: ffffffffffffffff
  157. Seccomp:        0
  158. voluntary_ctxt_switches:        0
  159. nonvoluntary_ctxt_switches:     1
  160. This shows you nearly the same information you would get if you viewed it with
  161. the ps  command.  In  fact,  ps  uses  the  proc  file  system  to  obtain its
  162. information.  But you get a more detailed  view of the  process by reading the
  163. file /proc/PID/status. It fields are described in table 1-2.
  164. The  statm  file  contains  more  detailed  information about the process
  165. memory usage. Its seven fields are explained in Table 1-3.  The stat file
  166. contains details information about the process itself.  Its fields are
  167. explained in Table 1-4.
  168. (for SMP CONFIG users)
  169. For making accounting scalable, RSS related information are handled in
  170. asynchronous manner and the vaule may not be very precise. To see a precise
  171. snapshot of a moment, you can see /proc/<pid>/smaps file and scan page table.
  172. It's slow but very precise.
  173. Table 1-2: Contents of the status files (as of 2.6.30-rc7)
  174. ..............................................................................
  175. Field                       Content
  176. Name                        filename of the executable
  177. State                       state (R is running, S is sleeping, D is sleeping
  178. in an uninterruptible wait, Z is zombie,
  179. T is traced or stopped)
  180. Tgid                        thread group ID
  181. Pid                         process id
  182. PPid                        process id of the parent process
  183. TracerPid                   PID of process tracing this process (0 if not)
  184. Uid                         Real, effective, saved set, and  file system UIDs
  185. Gid                         Real, effective, saved set, and  file system GIDs
  186. FDSize                      number of file descriptor slots currently allocated
  187. Groups                      supplementary group list
  188. VmPeak                      peak virtual memory size
  189. VmSize                      total program size
  190. VmLck                       locked memory size
  191. VmHWM                       peak resident set size ("high water mark")
  192. VmRSS                       size of memory portions
  193. VmData                      size of data, stack, and text segments
  194. VmStk                       size of data, stack, and text segments
  195. VmExe                       size of text segment
  196. VmLib                       size of shared library code
  197. VmPTE                       size of page table entries
  198. VmSwap                      size of swap usage (the number of referred swapents)
  199. Threads                     number of threads
  200. SigQ                        number of signals queued/max. number for queue
  201. SigPnd                      bitmap of pending signals for the thread
  202. ShdPnd                      bitmap of shared pending signals for the process
  203. SigBlk                      bitmap of blocked signals
  204. SigIgn                      bitmap of ignored signals
  205. SigCgt                      bitmap of catched signals
  206. CapInh                      bitmap of inheritable capabilities
  207. CapPrm                      bitmap of permitted capabilities
  208. CapEff                      bitmap of effective capabilities
  209. CapBnd                      bitmap of capabilities bounding set
  210. Seccomp                     seccomp mode, like prctl(PR_GET_SECCOMP, ...)
  211. Cpus_allowed                mask of CPUs on which this process may run
  212. Cpus_allowed_list           Same as previous, but in "list format"
  213. Mems_allowed                mask of memory nodes allowed to this process
  214. Mems_allowed_list           Same as previous, but in "list format"
  215. voluntary_ctxt_switches     number of voluntary context switches
  216. nonvoluntary_ctxt_switches  number of non voluntary context switches
  217. ..............................................................................
  218. Table 1-3: Contents of the statm files (as of 2.6.8-rc3)
  219. ..............................................................................
  220. Field    Content
  221. size     total program size (pages)        (same as VmSize in status)
  222. resident size of memory portions (pages)   (same as VmRSS in status)
  223. shared   number of pages that are shared   (i.e. backed by a file)
  224. trs      number of pages that are 'code'   (not including libs; broken,
  225. includes data segment)
  226. lrs      number of pages of library        (always 0 on 2.6)
  227. drs      number of pages of data/stack     (including libs; broken,
  228. includes library text)
  229. dt       number of dirty pages         (always 0 on 2.6)
  230. ..............................................................................
  231. Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
  232. ..............................................................................
  233. Field          Content
  234. pid           process id
  235. tcomm         filename of the executable
  236. state         state (R is running, S is sleeping, D is sleeping in an
  237. uninterruptible wait, Z is zombie, T is traced or stopped)
  238. ppid          process id of the parent process
  239. pgrp          pgrp of the process
  240. sid           session id
  241. tty_nr        tty the process uses
  242. tty_pgrp      pgrp of the tty
  243. flags         task flags
  244. min_flt       number of minor faults
  245. cmin_flt      number of minor faults with child's
  246. maj_flt       number of major faults
  247. cmaj_flt      number of major faults with child's
  248. utime         user mode jiffies
  249. stime         kernel mode jiffies
  250. cutime        user mode jiffies with child's
  251. cstime        kernel mode jiffies with child's
  252. priority      priority level
  253. nice          nice level
  254. num_threads   number of threads
  255. it_real_value (obsolete, always 0)
  256. start_time    time the process started after system boot
  257. vsize         virtual memory size
  258. rss           resident set memory size
  259. rsslim        current limit in bytes on the rss
  260. start_code    address above which program text can run
  261. end_code      address below which program text can run
  262. start_stack   address of the start of the main process stack
  263. esp           current value of ESP
  264. eip           current value of EIP
  265. pending       bitmap of pending signals
  266. blocked       bitmap of blocked signals
  267. sigign        bitmap of ignored signals
  268. sigcatch      bitmap of catched signals
  269. wchan         address where process went to sleep
  270. 0             (place holder)
  271. 0             (place holder)
  272. exit_signal   signal to send to parent thread on exit
  273. task_cpu      which CPU the task is scheduled on
  274. rt_priority   realtime priority
  275. policy        scheduling policy (man sched_setscheduler)
  276. blkio_ticks   time spent waiting for block IO
  277. gtime         guest time of the task in jiffies
  278. cgtime        guest time of the task children in jiffies
  279. start_data    address above which program data+bss is placed
  280. end_data      address below which program data+bss is placed
  281. start_brk     address above which program heap can be expanded with brk()
  282. arg_start     address above which program command line is placed
  283. arg_end       address below which program command line is placed
  284. env_start     address above which program environment is placed
  285. env_end       address below which program environment is placed
  286. exit_code     the thread's exit_code in the form reported by the waitpid system call
  287. ..............................................................................
  288. The /proc/PID/maps file containing the currently mapped memory regions and
  289. their access permissions.
  290. The format is:
  291. address           perms offset  dev   inode      pathname
  292. 08048000-08049000 r-xp 00000000 03:00 8312       /opt/test
  293. 08049000-0804a000 rw-p 00001000 03:00 8312       /opt/test
  294. 0804a000-0806b000 rw-p 00000000 00:00 0          [heap]
  295. a7cb1000-a7cb2000 ---p 00000000 00:00 0
  296. a7cb2000-a7eb2000 rw-p 00000000 00:00 0
  297. a7eb2000-a7eb3000 ---p 00000000 00:00 0
  298. a7eb3000-a7ed5000 rw-p 00000000 00:00 0          [stack:1001]
  299. a7ed5000-a8008000 r-xp 00000000 03:00 4222       /lib/libc.so.6
  300. a8008000-a800a000 r--p 00133000 03:00 4222       /lib/libc.so.6
  301. a800a000-a800b000 rw-p 00135000 03:00 4222       /lib/libc.so.6
  302. a800b000-a800e000 rw-p 00000000 00:00 0
  303. a800e000-a8022000 r-xp 00000000 03:00 14462      /lib/libpthread.so.0
  304. a8022000-a8023000 r--p 00013000 03:00 14462      /lib/libpthread.so.0
  305. a8023000-a8024000 rw-p 00014000 03:00 14462      /lib/libpthread.so.0
  306. a8024000-a8027000 rw-p 00000000 00:00 0
  307. a8027000-a8043000 r-xp 00000000 03:00 8317       /lib/ld-linux.so.2
  308. a8043000-a8044000 r--p 0001b000 03:00 8317       /lib/ld-linux.so.2
  309. a8044000-a8045000 rw-p 0001c000 03:00 8317       /lib/ld-linux.so.2
  310. aff35000-aff4a000 rw-p 00000000 00:00 0          [stack]
  311. ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
  312. where "address" is the address space in the process that it occupies, "perms"
  313. is a set of permissions:
  314. r = read
  315. w = write
  316. x = execute
  317. s = shared
  318. p = private (copy on write)
  319. "offset" is the offset into the mapping, "dev" is the device (major:minor), and
  320. "inode" is the inode  on that device.  0 indicates that  no inode is associated
  321. with the memory region, as the case would be with BSS (uninitialized data).
  322. The "pathname" shows the name associated file for this mapping.  If the mapping
  323. is not associated with a file:
  324. [heap]                   = the heap of the program
  325. [stack]                  = the stack of the main process
  326. [stack:1001]             = the stack of the thread with tid 1001
  327. [vdso]                   = the "virtual dynamic shared object",
  328. the kernel system call handler
  329. [anon:<name>]            = an anonymous mapping that has been
  330. named by userspace
  331. or if empty, the mapping is anonymous.
  332. The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint
  333. of the individual tasks of a process. In this file you will see a mapping marked
  334. as [stack] if that task sees it as a stack. This is a key difference from the
  335. content of /proc/PID/maps, where you will see all mappings that are being used
  336. as stack by all of those tasks. Hence, for the example above, the task-level
  337. map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this:
  338. 08048000-08049000 r-xp 00000000 03:00 8312       /opt/test
  339. 08049000-0804a000 rw-p 00001000 03:00 8312       /opt/test
  340. 0804a000-0806b000 rw-p 00000000 00:00 0          [heap]
  341. a7cb1000-a7cb2000 ---p 00000000 00:00 0
  342. a7cb2000-a7eb2000 rw-p 00000000 00:00 0
  343. a7eb2000-a7eb3000 ---p 00000000 00:00 0
  344. a7eb3000-a7ed5000 rw-p 00000000 00:00 0          [stack]
  345. a7ed5000-a8008000 r-xp 00000000 03:00 4222       /lib/libc.so.6
  346. a8008000-a800a000 r--p 00133000 03:00 4222       /lib/libc.so.6
  347. a800a000-a800b000 rw-p 00135000 03:00 4222       /lib/libc.so.6
  348. a800b000-a800e000 rw-p 00000000 00:00 0
  349. a800e000-a8022000 r-xp 00000000 03:00 14462      /lib/libpthread.so.0
  350. a8022000-a8023000 r--p 00013000 03:00 14462      /lib/libpthread.so.0
  351. a8023000-a8024000 rw-p 00014000 03:00 14462      /lib/libpthread.so.0
  352. a8024000-a8027000 rw-p 00000000 00:00 0
  353. a8027000-a8043000 r-xp 00000000 03:00 8317       /lib/ld-linux.so.2
  354. a8043000-a8044000 r--p 0001b000 03:00 8317       /lib/ld-linux.so.2
  355. a8044000-a8045000 rw-p 0001c000 03:00 8317       /lib/ld-linux.so.2
  356. aff35000-aff4a000 rw-p 00000000 00:00 0
  357. ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
  358. The /proc/PID/smaps is an extension based on maps, showing the memory
  359. consumption for each of the process's mappings. For each of mappings there
  360. is a series of lines such as the following:
  361. 08048000-080bc000 r-xp 00000000 03:02 13130      /bin/bash
  362. Size:               1084 kB
  363. Rss:                 892 kB
  364. Pss:                 374 kB
  365. Shared_Clean:        892 kB
  366. Shared_Dirty:          0 kB
  367. Private_Clean:         0 kB
  368. Private_Dirty:         0 kB
  369. Referenced:          892 kB
  370. Anonymous:             0 kB
  371. Swap:                  0 kB
  372. KernelPageSize:        4 kB
  373. MMUPageSize:           4 kB
  374. Locked:              374 kB
  375. VmFlags: rd ex mr mw me de
  376. Name:           name from userspace
  377. the first of these lines shows the same information as is displayed for the
  378. mapping in /proc/PID/maps.  The remaining lines show the size of the mapping
  379. (size), the amount of the mapping that is currently resident in RAM (RSS), the
  380. process' proportional share of this mapping (PSS), the number of clean and
  381. dirty private pages in the mapping.  Note that even a page which is part of a
  382. MAP_SHARED mapping, but has only a single pte mapped, i.e.  is currently used
  383. by only one process, is accounted as private and not as shared.  "Referenced"
  384. indicates the amount of memory currently marked as referenced or accessed.
  385. "Anonymous" shows the amount of memory that does not belong to any file.  Even
  386. a mapping associated with a file may contain anonymous pages: when MAP_PRIVATE
  387. and a page is modified, the file page is replaced by a private anonymous copy.
  388. "Swap" shows how much would-be-anonymous memory is also used, but out on
  389. swap.
  390. "VmFlags" field deserves a separate description. This member represents the kernel
  391. flags associated with the particular virtual memory area in two letter encoded
  392. manner. The codes are the following:
  393. rd  - readable
  394. wr  - writeable
  395. ex  - executable
  396. sh  - shared
  397. mr  - may read
  398. mw  - may write
  399. me  - may execute
  400. ms  - may share
  401. gd  - stack segment growns down
  402. pf  - pure PFN range
  403. dw  - disabled write to the mapped file
  404. lo  - pages are locked in memory
  405. io  - memory mapped I/O area
  406. sr  - sequential read advise provided
  407. rr  - random read advise provided
  408. dc  - do not copy area on fork
  409. de  - do not expand area on remapping
  410. ac  - area is accountable
  411. nr  - swap space is not reserved for the area
  412. ht  - area uses huge tlb pages
  413. nl  - non-linear mapping
  414. ar  - architecture specific flag
  415. dd  - do not include area into core dump
  416. mm  - mixed map area
  417. hg  - huge page advise flag
  418. nh  - no-huge page advise flag
  419. mg  - mergable advise flag
  420. Note that there is no guarantee that every flag and associated mnemonic will
  421. be present in all further kernel releases. Things get changed, the flags may
  422. be vanished or the reverse -- new added.
  423. The "Name" field will only be present on a mapping that has been named by
  424. userspace, and will show the name passed in by userspace.
  425. This file is only present if the CONFIG_MMU kernel configuration option is
  426. enabled.
  427. The /proc/PID/clear_refs is used to reset the PG_Referenced and ACCESSED/YOUNG
  428. bits on both physical and virtual pages associated with a process.
  429. To clear the bits for all the pages associated with the process
  430. > echo 1 > /proc/PID/clear_refs
  431. To clear the bits for the anonymous pages associated with the process
  432. > echo 2 > /proc/PID/clear_refs
  433. To clear the bits for the file mapped pages associated with the process
  434. > echo 3 > /proc/PID/clear_refs
  435. Any other value written to /proc/PID/clear_refs will have no effect.
  436. To reset the peak resident set size ("high water mark") to the process's
  437. current value:
  438. > echo 5 > /proc/PID/clear_refs
  439. The /proc/pid/pagemap gives the PFN, which can be used to find the pageflags
  440. using /proc/kpageflags and number of times a page is mapped using
  441. /proc/kpagecount. For detailed explanation, see Documentation/vm/pagemap.txt.
  442. 1.2 Kernel data
  443. ---------------
  444. Similar to  the  process entries, the kernel data files give information about
  445. the running kernel. The files used to obtain this information are contained in
  446. /proc and  are  listed  in Table 1-5. Not all of these will be present in your
  447. system. It  depends  on the kernel configuration and the loaded modules, which
  448. files are there, and which are missing.
  449. Table 1-5: Kernel info in /proc
  450. ..............................................................................
  451. File        Content
  452. apm         Advanced power management info
  453. buddyinfo   Kernel memory allocator information (see text) (2.5)
  454. bus         Directory containing bus specific information
  455. cmdline     Kernel command line
  456. cpuinfo     Info about the CPU
  457. devices     Available devices (block and character)
  458. dma         Used DMS channels
  459. filesystems Supported filesystems
  460. driver      Various drivers grouped here, currently rtc (2.4)
  461. execdomains Execdomains, related to security           (2.4)
  462. fb      Frame Buffer devices               (2.4)
  463. fs      File system parameters, currently nfs/exports  (2.4)
  464. ide         Directory containing info about the IDE subsystem
  465. interrupts  Interrupt usage
  466. iomem       Memory map                     (2.4)
  467. ioports     I/O port usage
  468. irq         Masks for irq to cpu affinity          (2.4)(smp?)
  469. isapnp      ISA PnP (Plug&Play) Info               (2.4)
  470. kcore       Kernel core image (can be ELF or A.OUT(deprecated in 2.4))
  471. kmsg        Kernel messages
  472. ksyms       Kernel symbol table
  473. loadavg     Load average of last 1, 5 & 15 minutes
  474. locks       Kernel locks
  475. meminfo     Memory info
  476. misc        Miscellaneous
  477. modules     List of loaded modules
  478. mounts      Mounted filesystems
  479. net         Networking info (see text)
  480. pagetypeinfo Additional page allocator information (see text)  (2.5)
  481. partitions  Table of partitions known to the system
  482. pci         Deprecated info of PCI bus (new way -> /proc/bus/pci/,
  483. decoupled by lspci                 (2.4)
  484. rtc         Real time clock
  485. scsi        SCSI info (see text)
  486. slabinfo    Slab pool info
  487. softirqs    softirq usage
  488. stat        Overall statistics
  489. swaps       Swap space utilization
  490. sys         See chapter 2
  491. sysvipc     Info of SysVIPC Resources (msg, sem, shm)      (2.4)
  492. tty         Info of tty drivers
  493. uptime      System uptime
  494. version     Kernel version
  495. video       bttv info of video resources           (2.4)
  496. vmallocinfo Show vmalloced areas
  497. ..............................................................................
  498. You can,  for  example,  check  which interrupts are currently in use and what
  499. they are used for by looking in the file /proc/interrupts:
  500. > cat /proc/interrupts
  501. CPU0
  502. 0:    8728810          XT-PIC  timer
  503. 1:        895          XT-PIC  keyboard
  504. 2:          0          XT-PIC  cascade
  505. 3:     531695          XT-PIC  aha152x
  506. 4:    2014133          XT-PIC  serial
  507. 5:      44401          XT-PIC  pcnet_cs
  508. 8:          2          XT-PIC  rtc
  509. 11:          8          XT-PIC  i82365
  510. 12:     182918          XT-PIC  PS/2 Mouse
  511. 13:          1          XT-PIC  fpu
  512. 14:    1232265          XT-PIC  ide0
  513. 15:          7          XT-PIC  ide1
  514. NMI:          0
  515. In 2.4.* a couple of lines where added to this file LOC & ERR (this time is the
  516. output of a SMP machine):
  517. > cat /proc/interrupts
  518. CPU0       CPU1
  519. 0:    1243498    1214548    IO-APIC-edge  timer
  520. 1:       8949       8958    IO-APIC-edge  keyboard
  521. 2:          0          0          XT-PIC  cascade
  522. 5:      11286      10161    IO-APIC-edge  soundblaster
  523. 8:          1          0    IO-APIC-edge  rtc
  524. 9:      27422      27407    IO-APIC-edge  3c503
  525. 12:     113645     113873    IO-APIC-edge  PS/2 Mouse
  526. 13:          0          0          XT-PIC  fpu
  527. 14:      22491      24012    IO-APIC-edge  ide0
  528. 15:       2183       2415    IO-APIC-edge  ide1
  529. 17:      30564      30414   IO-APIC-level  eth0
  530. 18:        177        164   IO-APIC-level  bttv
  531. NMI:    2457961    2457959
  532. LOC:    2457882    2457881
  533. ERR:       2155
  534. NMI is incremented in this case because every timer interrupt generates a NMI
  535. (Non Maskable Interrupt) which is used by the NMI Watchdog to detect lockups.
  536. LOC is the local interrupt counter of the internal APIC of every CPU.
  537. ERR is incremented in the case of errors in the IO-APIC bus (the bus that
  538. connects the CPUs in a SMP system. This means that an error has been detected,
  539. the IO-APIC automatically retry the transmission, so it should not be a big
  540. problem, but you should read the SMP-FAQ.
  541. In 2.6.2* /proc/interrupts was expanded again.  This time the goal was for
  542. /proc/interrupts to display every IRQ vector in use by the system, not
  543. just those considered 'most important'.  The new vectors are:
  544. THR -- interrupt raised when a machine check threshold counter
  545. (typically counting ECC corrected errors of memory or cache) exceeds
  546. a configurable threshold.  Only available on some systems.
  547. TRM -- a thermal event interrupt occurs when a temperature threshold
  548. has been exceeded for the CPU.  This interrupt may also be generated
  549. when the temperature drops back to normal.
  550. SPU -- a spurious interrupt is some interrupt that was raised then lowered
  551. by some IO device before it could be fully processed by the APIC.  Hence
  552. the APIC sees the interrupt but does not know what device it came from.
  553. For this case the APIC will generate the interrupt with a IRQ vector
  554. of 0xff. This might also be generated by chipset bugs.
  555. RES, CAL, TLB -- rescheduling, call and TLB flush interrupts are
  556. sent from one CPU to another per the needs of the OS.  Typically,
  557. their statistics are used by kernel developers and interested users to
  558. determine the occurrence of interrupts of the given type.
  559. The above IRQ vectors are displayed only when relevant.  For example,
  560. the threshold vector does not exist on x86_64 platforms.  Others are
  561. suppressed when the system is a uniprocessor.  As of this writing, only
  562. i386 and x86_64 platforms support the new IRQ vector displays.
  563. Of some interest is the introduction of the /proc/irq directory to 2.4.
  564. It could be used to set IRQ to CPU affinity, this means that you can "hook" an
  565. IRQ to only one CPU, or to exclude a CPU of handling IRQs. The contents of the
  566. irq subdir is one subdir for each IRQ, and two files; default_smp_affinity and
  567. prof_cpu_mask.
  568. For example
  569. > ls /proc/irq/
  570. 0  10  12  14  16  18  2  4  6  8  prof_cpu_mask
  571. 1  11  13  15  17  19  3  5  7  9  default_smp_affinity
  572. > ls /proc/irq/0/
  573. smp_affinity
  574. smp_affinity is a bitmask, in which you can specify which CPUs can handle the
  575. IRQ, you can set it by doing:
  576. > echo 1 > /proc/irq/10/smp_affinity
  577. This means that only the first CPU will handle the IRQ, but you can also echo
  578. 5 which means that only the first and fourth CPU can handle the IRQ.
  579. The contents of each smp_affinity file is the same by default:
  580. > cat /proc/irq/0/smp_affinity
  581. ffffffff
  582. There is an alternate interface, smp_affinity_list which allows specifying
  583. a cpu range instead of a bitmask:
  584. > cat /proc/irq/0/smp_affinity_list
  585. 1024-1031
  586. The default_smp_affinity mask applies to all non-active IRQs, which are the
  587. IRQs which have not yet been allocated/activated, and hence which lack a
  588. /proc/irq/[0-9]* directory.
  589. The node file on an SMP system shows the node to which the device using the IRQ
  590. reports itself as being attached. This hardware locality information does not
  591. include information about any possible driver locality preference.
  592. prof_cpu_mask specifies which CPUs are to be profiled by the system wide
  593. profiler. Default value is ffffffff (all cpus if there are only 32 of them).
  594. The way IRQs are routed is handled by the IO-APIC, and it's Round Robin
  595. between all the CPUs which are allowed to handle it. As usual the kernel has
  596. more info than you and does a better job than you, so the defaults are the
  597. best choice for almost everyone.  [Note this applies only to those IO-APIC's
  598. that support "Round Robin" interrupt distribution.]
  599. There are  three  more  important subdirectories in /proc: net, scsi, and sys.
  600. The general  rule  is  that  the  contents,  or  even  the  existence of these
  601. directories, depend  on your kernel configuration. If SCSI is not enabled, the
  602. directory scsi  may  not  exist. The same is true with the net, which is there
  603. only when networking support is present in the running kernel.
  604. The slabinfo  file  gives  information  about  memory usage at the slab level.
  605. Linux uses  slab  pools for memory management above page level in version 2.2.
  606. Commonly used  objects  have  their  own  slab  pool (such as network buffers,
  607. directory cache, and so on).
  608. ..............................................................................
  609. > cat /proc/buddyinfo
  610. Node 0, zone      DMA      0      4      5      4      4      3 ...
  611. Node 0, zone   Normal      1      0      0      1    101      8 ...
  612. Node 0, zone  HighMem      2      0      0      1      1      0 ...
  613. External fragmentation is a problem under some workloads, and buddyinfo is a
  614. useful tool for helping diagnose these problems.  Buddyinfo will give you a
  615. clue as to how big an area you can safely allocate, or why a previous
  616. allocation failed.
  617. Each column represents the number of pages of a certain order which are
  618. available.  In this case, there are 0 chunks of 2^0*PAGE_SIZE available in
  619. ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE
  620. available in ZONE_NORMAL, etc...
  621. More information relevant to external fragmentation can be found in
  622. pagetypeinfo.
  623. > cat /proc/pagetypeinfo
  624. Page block order: 9
  625. Pages per block:  512
  626. Free pages count per migrate type at order       0      1      2      3      4      5      6      7      8      9     10
  627. Node    0, zone      DMA, type    Unmovable      0      0      0      1      1      1      1      1      1      1      0
  628. Node    0, zone      DMA, type  Reclaimable      0      0      0      0      0      0      0      0      0      0      0
  629. Node    0, zone      DMA, type      Movable      1      1      2      1      2      1      1      0      1      0      2
  630. Node    0, zone      DMA, type      Reserve      0      0      0      0      0      0      0      0      0      1      0
  631. Node    0, zone      DMA, type      Isolate      0      0      0      0      0      0      0      0      0      0      0
  632. Node    0, zone    DMA32, type    Unmovable    103     54     77      1      1      1     11      8      7      1      9
  633. Node    0, zone    DMA32, type  Reclaimable      0      0      2      1      0      0      0      0      1      0      0
  634. Node    0, zone    DMA32, type      Movable    169    152    113     91     77     54     39     13      6      1    452
  635. Node    0, zone    DMA32, type      Reserve      1      2      2      2      2      0      1      1      1      1      0
  636. Node    0, zone    DMA32, type      Isolate      0      0      0      0      0      0      0      0      0      0      0
  637. Number of blocks type     Unmovable  Reclaimable      Movable      Reserve      Isolate
  638. Node 0, zone      DMA            2            0            5            1            0
  639. Node 0, zone    DMA32           41            6          967            2            0
  640. Fragmentation avoidance in the kernel works by grouping pages of different
  641. migrate types into the same contiguous regions of memory called page blocks.
  642. A page block is typically the size of the default hugepage size e.g. 2MB on
  643. X86-64. By keeping pages grouped based on their ability to move, the kernel
  644. can reclaim pages within a page block to satisfy a high-order allocation.
  645. The pagetypinfo begins with information on the size of a page block. It
  646. then gives the same type of information as buddyinfo except broken down
  647. by migrate-type and finishes with details on how many page blocks of each
  648. type exist.
  649. If min_free_kbytes has been tuned correctly (recommendations made by hugeadm
  650. from libhugetlbfs http://sourceforge.net/projects/libhugetlbfs/), one can
  651. make an estimate of the likely number of huge pages that can be allocated
  652. at a given point in time. All the "Movable" blocks should be allocatable
  653. unless memory has been mlock()'d. Some of the Reclaimable blocks should
  654. also be allocatable although a lot of filesystem metadata may have to be
  655. reclaimed to achieve this.
  656. ..............................................................................
  657. meminfo:
  658. Provides information about distribution and utilization of memory.  This
  659. varies by architecture and compile options.  The following is from a
  660. 16GB PIII, which has highmem enabled.  You may not have all of these fields.
  661. > cat /proc/meminfo
  662. The "Locked" indicates whether the mapping is locked in memory or not.
  663. MemTotal:     16344972 kB
  664. MemFree:      13634064 kB
  665. Buffers:          3656 kB
  666. Cached:        1195708 kB
  667. SwapCached:          0 kB
  668. Active:         891636 kB
  669. Inactive:      1077224 kB
  670. HighTotal:    15597528 kB
  671. HighFree:     13629632 kB
  672. LowTotal:       747444 kB
  673. LowFree:          4432 kB
  674. SwapTotal:           0 kB
  675. SwapFree:            0 kB
  676. Dirty:             968 kB
  677. Writeback:           0 kB
  678. AnonPages:      861800 kB
  679. Mapped:         280372 kB
  680. Slab:           284364 kB
  681. SReclaimable:   159856 kB
  682. SUnreclaim:     124508 kB
  683. PageTables:      24448 kB
  684. NFS_Unstable:        0 kB
  685. Bounce:              0 kB
  686. WritebackTmp:        0 kB
  687. CommitLimit:   7669796 kB
  688. Committed_AS:   100056 kB
  689. VmallocTotal:   112216 kB
  690. VmallocUsed:       428 kB
  691. VmallocChunk:   111088 kB
  692. AnonHugePages:   49152 kB
  693. MemTotal: Total usable ram (i.e. physical ram minus a few reserved
  694. bits and the kernel binary code)
  695. MemFree: The sum of LowFree+HighFree
  696. Buffers: Relatively temporary storage for raw disk blocks
  697. shouldn't get tremendously large (20MB or so)
  698. Cached: in-memory cache for files read from the disk (the
  699. pagecache).  Doesn't include SwapCached
  700. SwapCached: Memory that once was swapped out, is swapped back in but
  701. still also is in the swapfile (if memory is needed it
  702. doesn't need to be swapped out AGAIN because it is already
  703. in the swapfile. This saves I/O)
  704. Active: Memory that has been used more recently and usually not
  705. reclaimed unless absolutely necessary.
  706. Inactive: Memory which has been less recently used.  It is more
  707. eligible to be reclaimed for other purposes
  708. HighTotal:
  709. HighFree: Highmem is all memory above ~860MB of physical memory
  710. Highmem areas are for use by userspace programs, or
  711. for the pagecache.  The kernel must use tricks to access
  712. this memory, making it slower to access than lowmem.
  713. LowTotal:
  714. LowFree: Lowmem is memory which can be used for everything that
  715. highmem can be used for, but it is also available for the
  716. kernel's use for its own data structures.  Among many
  717. other things, it is where everything from the Slab is
  718. allocated.  Bad things happen when you're out of lowmem.
  719. SwapTotal: total amount of swap space available
  720. SwapFree: Memory which has been evicted from RAM, and is temporarily
  721. on the disk
  722. Dirty: Memory which is waiting to get written back to the disk
  723. Writeback: Memory which is actively being written back to the disk
  724. AnonPages: Non-file backed pages mapped into userspace page tables
  725. AnonHugePages: Non-file backed huge pages mapped into userspace page tables
  726. Mapped: files which have been mmaped, such as libraries
  727. Slab: in-kernel data structures cache
  728. SReclaimable: Part of Slab, that might be reclaimed, such as caches
  729. SUnreclaim: Part of Slab, that cannot be reclaimed on memory pressure
  730. PageTables: amount of memory dedicated to the lowest level of page
  731. tables.
  732. NFS_Unstable: NFS pages sent to the server, but not yet committed to stable
  733. storage
  734. Bounce: Memory used for block device "bounce buffers"
  735. WritebackTmp: Memory used by FUSE for temporary writeback buffers
  736. CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'),
  737. this is the total amount of  memory currently available to
  738. be allocated on the system. This limit is only adhered to
  739. if strict overcommit accounting is enabled (mode 2 in
  740. 'vm.overcommit_memory').
  741. The CommitLimit is calculated with the following formula:
  742. CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap
  743. For example, on a system with 1G of physical RAM and 7G
  744. of swap with a `vm.overcommit_ratio` of 30 it would
  745. yield a CommitLimit of 7.3G.
  746. For more details, see the memory overcommit documentation
  747. in vm/overcommit-accounting.
  748. Committed_AS: The amount of memory presently allocated on the system.
  749. The committed memory is a sum of all of the memory which
  750. has been allocated by processes, even if it has not been
  751. "used" by them as of yet. A process which malloc()'s 1G
  752. of memory, but only touches 300M of it will only show up
  753. as using 300M of memory even if it has the address space
  754. allocated for the entire 1G. This 1G is memory which has
  755. been "committed" to by the VM and can be used at any time
  756. by the allocating application. With strict overcommit
  757. enabled on the system (mode 2 in 'vm.overcommit_memory'),
  758. allocations which would exceed the CommitLimit (detailed
  759. above) will not be permitted. This is useful if one needs
  760. to guarantee that processes will not fail due to lack of
  761. memory once that memory has been successfully allocated.
  762. VmallocTotal: total size of vmalloc memory area
  763. VmallocUsed: amount of vmalloc area which is used
  764. VmallocChunk: largest contiguous block of vmalloc area which is free
  765. ..............................................................................
  766. vmallocinfo:
  767. Provides information about vmalloced/vmaped areas. One line per area,
  768. containing the virtual address range of the area, size in bytes,
  769. caller information of the creator, and optional information depending
  770. on the kind of area :
  771. pages=nr    number of pages
  772. phys=addr   if a physical address was specified
  773. ioremap     I/O mapping (ioremap() and friends)
  774. vmalloc     vmalloc() area
  775. vmap        vmap()ed pages
  776. user        VM_USERMAP area
  777. vpages      buffer for pages pointers was vmalloced (huge area)
  778. N<node>=nr  (Only on NUMA kernels)
  779. Number of pages allocated on memory node <node>
  780. > cat /proc/vmallocinfo
  781. 0xffffc20000000000-0xffffc20000201000 2101248 alloc_large_system_hash+0x204 ...
  782. /0x2c0 pages=512 vmalloc N0=128 N1=128 N2=128 N3=128
  783. 0xffffc20000201000-0xffffc20000302000 1052672 alloc_large_system_hash+0x204 ...
  784. /0x2c0 pages=256 vmalloc N0=64 N1=64 N2=64 N3=64
  785. 0xffffc20000302000-0xffffc20000304000    8192 acpi_tb_verify_table+0x21/0x4f...
  786. phys=7fee8000 ioremap
  787. 0xffffc20000304000-0xffffc20000307000   12288 acpi_tb_verify_table+0x21/0x4f...
  788. phys=7fee7000 ioremap
  789. 0xffffc2000031d000-0xffffc2000031f000    8192 init_vdso_vars+0x112/0x210
  790. 0xffffc2000031f000-0xffffc2000032b000   49152 cramfs_uncompress_init+0x2e ...
  791. /0x80 pages=11 vmalloc N0=3 N1=3 N2=2 N3=3
  792. 0xffffc2000033a000-0xffffc2000033d000   12288 sys_swapon+0x640/0xac0      ...
  793. pages=2 vmalloc N1=2
  794. 0xffffc20000347000-0xffffc2000034c000   20480 xt_alloc_table_info+0xfe ...
  795. /0x130 [x_tables] pages=4 vmalloc N0=4
  796. 0xffffffffa0000000-0xffffffffa000f000   61440 sys_init_module+0xc27/0x1d00 ...
  797. pages=14 vmalloc N2=14
  798. 0xffffffffa000f000-0xffffffffa0014000   20480 sys_init_module+0xc27/0x1d00 ...
  799. pages=4 vmalloc N1=4
  800. 0xffffffffa0014000-0xffffffffa0017000   12288 sys_init_module+0xc27/0x1d00 ...
  801. pages=2 vmalloc N1=2
  802. 0xffffffffa0017000-0xffffffffa0022000   45056 sys_init_module+0xc27/0x1d00 ...
  803. pages=10 vmalloc N0=10
  804. ..............................................................................
  805. softirqs:
  806. Provides counts of softirq handlers serviced since boot time, for each cpu.
  807. > cat /proc/softirqs
  808. CPU0       CPU1       CPU2       CPU3
  809. HI:          0          0          0          0
  810. TIMER:      27166      27120      27097      27034
  811. NET_TX:          0          0          0         17
  812. NET_RX:         42          0          0         39
  813. BLOCK:          0          0        107       1121
  814. TASKLET:          0          0          0        290
  815. SCHED:      27035      26983      26971      26746
  816. HRTIMER:          0          0          0          0
  817. RCU:       1678       1769       2178       2250
  818. 1.3 IDE devices in /proc/ide
  819. ----------------------------
  820. The subdirectory /proc/ide contains information about all IDE devices of which
  821. the kernel  is  aware.  There is one subdirectory for each IDE controller, the
  822. file drivers  and a link for each IDE device, pointing to the device directory
  823. in the controller specific subtree.
  824. The file  drivers  contains general information about the drivers used for the
  825. IDE devices:
  826. > cat /proc/ide/drivers
  827. ide-cdrom version 4.53
  828. ide-disk version 1.08
  829. More detailed  information  can  be  found  in  the  controller  specific
  830. subdirectories. These  are  named  ide0,  ide1  and  so  on.  Each  of  these
  831. directories contains the files shown in table 1-6.
  832. Table 1-6: IDE controller info in  /proc/ide/ide?
  833. ..............................................................................
  834. File    Content
  835. channel IDE channel (0 or 1)
  836. config  Configuration (only for PCI/IDE bridge)
  837. mate    Mate name
  838. model   Type/Chipset of IDE controller
  839. ..............................................................................
  840. Each device  connected  to  a  controller  has  a separate subdirectory in the
  841. controllers directory.  The  files  listed in table 1-7 are contained in these
  842. directories.
  843. Table 1-7: IDE device information
  844. ..............................................................................
  845. File             Content
  846. cache            The cache
  847. capacity         Capacity of the medium (in 512Byte blocks)
  848. driver           driver and version
  849. geometry         physical and logical geometry
  850. identify         device identify block
  851. media            media type
  852. model            device identifier
  853. settings         device setup
  854. smart_thresholds IDE disk management thresholds
  855. smart_values     IDE disk management values
  856. ..............................................................................
  857. The most  interesting  file is settings. This file contains a nice overview of
  858. the drive parameters:
  859. # cat /proc/ide/ide0/hda/settings
  860. name                    value           min             max             mode
  861. ----                    -----           ---             ---             ----
  862. bios_cyl                526             0               65535           rw
  863. bios_head               255             0               255             rw
  864. bios_sect               63              0               63              rw
  865. breada_readahead        4               0               127             rw
  866. bswap                   0               0               1               r
  867. file_readahead          72              0               2097151         rw
  868. io_32bit                0               0               3               rw
  869. keepsettings            0               0               1               rw
  870. max_kb_per_request      122             1               127             rw
  871. multcount               0               0               8               rw
  872. nice1                   1               0               1               rw
  873. nowerr                  0               0               1               rw
  874. pio_mode                write-only      0               255             w
  875. slow                    0               0               1               rw
  876. unmaskirq               0               0               1               rw
  877. using_dma               0               0               1               rw
  878. 1.4 Networking info in /proc/net
  879. --------------------------------
  880. The subdirectory  /proc/net  follows  the  usual  pattern. Table 1-8 shows the
  881. additional values  you  get  for  IP  version 6 if you configure the kernel to
  882. support this. Table 1-9 lists the files and their meaning.
  883. Table 1-8: IPv6 info in /proc/net
  884. ..............................................................................
  885. File       Content
  886. udp6       UDP sockets (IPv6)
  887. tcp6       TCP sockets (IPv6)
  888. raw6       Raw device statistics (IPv6)
  889. igmp6      IP multicast addresses, which this host joined (IPv6)
  890. if_inet6   List of IPv6 interface addresses
  891. ipv6_route Kernel routing table for IPv6
  892. rt6_stats  Global IPv6 routing tables statistics
  893. sockstat6  Socket statistics (IPv6)
  894. snmp6      Snmp data (IPv6)
  895. ..............................................................................
  896. Table 1-9: Network info in /proc/net
  897. ..............................................................................
  898. File          Content
  899. arp           Kernel  ARP table
  900. dev           network devices with statistics
  901. dev_mcast     the Layer2 multicast groups a device is listening too
  902. (interface index, label, number of references, number of bound
  903. addresses).
  904. dev_stat      network device status
  905. ip_fwchains   Firewall chain linkage
  906. ip_fwnames    Firewall chain names
  907. ip_masq       Directory containing the masquerading tables
  908. ip_masquerade Major masquerading table
  909. netstat       Network statistics
  910. raw           raw device statistics
  911. route         Kernel routing table
  912. rpc           Directory containing rpc info
  913. rt_cache      Routing cache
  914. snmp          SNMP data
  915. sockstat      Socket statistics
  916. tcp           TCP  sockets
  917. udp           UDP sockets
  918. unix          UNIX domain sockets
  919. wireless      Wireless interface data (Wavelan etc)
  920. igmp          IP multicast addresses, which this host joined
  921. psched        Global packet scheduler parameters.
  922. netlink       List of PF_NETLINK sockets
  923. ip_mr_vifs    List of multicast virtual interfaces
  924. ip_mr_cache   List of multicast routing cache
  925. ..............................................................................
  926. You can  use  this  information  to see which network devices are available in
  927. your system and how much traffic was routed over those devices:
  928. > cat /proc/net/dev
  929. Inter-|Receive                                                   |[...
  930. face |bytes    packets errs drop fifo frame compressed multicast|[...
  931. lo:  908188   5596     0    0    0     0          0         0 [...
  932. ppp0:15475140  20721   410    0    0   410          0         0 [...
  933. eth0:  614530   7085     0    0    0     0          0         1 [...
  934. ...] Transmit
  935. ...] bytes    packets errs drop fifo colls carrier compressed
  936. ...]  908188     5596    0    0    0     0       0          0
  937. ...] 1375103    17405    0    0    0     0       0          0
  938. ...] 1703981     5535    0    0    0     3       0          0
  939. In addition, each Channel Bond interface has its own directory.  For
  940. example, the bond0 device will have a directory called /proc/net/bond0/.
  941. It will contain information that is specific to that bond, such as the
  942. current slaves of the bond, the link status of the slaves, and how
  943. many times the slaves link has failed.
  944. 1.5 SCSI info
  945. -------------
  946. If you  have  a  SCSI  host adapter in your system, you'll find a subdirectory
  947. named after  the driver for this adapter in /proc/scsi. You'll also see a list
  948. of all recognized SCSI devices in /proc/scsi:
  949. >cat /proc/scsi/scsi
  950. Attached devices:
  951. Host: scsi0 Channel: 00 Id: 00 Lun: 00
  952. Vendor: IBM      Model: DGHS09U          Rev: 03E0
  953. Type:   Direct-Access                    ANSI SCSI revision: 03
  954. Host: scsi0 Channel: 00 Id: 06 Lun: 00
  955. Vendor: PIONEER  Model: CD-ROM DR-U06S   Rev: 1.04
  956. Type:   CD-ROM                           ANSI SCSI revision: 02
  957. The directory  named  after  the driver has one file for each adapter found in
  958. the system.  These  files  contain information about the controller, including
  959. the used  IRQ  and  the  IO  address range. The amount of information shown is
  960. dependent on  the adapter you use. The example shows the output for an Adaptec
  961. AHA-2940 SCSI adapter:
  962. > cat /proc/scsi/aic7xxx/0
  963. Adaptec AIC7xxx driver version: 5.1.19/3.2.4
  964. Compile Options:
  965. TCQ Enabled By Default : Disabled
  966. AIC7XXX_PROC_STATS     : Disabled
  967. AIC7XXX_RESET_DELAY    : 5
  968. Adapter Configuration:
  969. SCSI Adapter: Adaptec AHA-294X Ultra SCSI host adapter
  970. Ultra Wide Controller
  971. PCI MMAPed I/O Base: 0xeb001000
  972. Adapter SEEPROM Config: SEEPROM found and used.
  973. Adaptec SCSI BIOS: Enabled
  974. IRQ: 10
  975. SCBs: Active 0, Max Active 2,
  976. Allocated 15, HW 16, Page 255
  977. Interrupts: 160328
  978. BIOS Control Word: 0x18b6
  979. Adapter Control Word: 0x005b
  980. Extended Translation: Enabled
  981. Disconnect Enable Flags: 0xffff
  982. Ultra Enable Flags: 0x0001
  983. Tag Queue Enable Flags: 0x0000
  984. Ordered Queue Tag Flags: 0x0000
  985. Default Tag Queue Depth: 8
  986. Tagged Queue By Device array for aic7xxx host instance 0:
  987. {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
  988. Actual queue depth per device for aic7xxx host instance 0:
  989. {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
  990. Statistics:
  991. (scsi0:0:0:0)
  992. Device using Wide/Sync transfers at 40.0 MByte/sec, offset 8
  993. Transinfo settings: current(12/8/1/0), goal(12/8/1/0), user(12/15/1/0)
  994. Total transfers 160151 (74577 reads and 85574 writes)
  995. (scsi0:0:6:0)
  996. Device using Narrow/Sync transfers at 5.0 MByte/sec, offset 15
  997. Transinfo settings: current(50/15/0/0), goal(50/15/0/0), user(50/15/0/0)
  998. Total transfers 0 (0 reads and 0 writes)
  999. 1.6 Parallel port info in /proc/parport
  1000. ---------------------------------------
  1001. The directory  /proc/parport  contains information about the parallel ports of
  1002. your system.  It  has  one  subdirectory  for  each port, named after the port
  1003. number (0,1,2,...).
  1004. These directories contain the four files shown in Table 1-10.
  1005. Table 1-10: Files in /proc/parport
  1006. ..............................................................................
  1007. File      Content
  1008. autoprobe Any IEEE-1284 device ID information that has been acquired.
  1009. devices   list of the device drivers using that port. A + will appear by the
  1010. name of the device currently using the port (it might not appear
  1011. against any).
  1012. hardware  Parallel port's base address, IRQ line and DMA channel.
  1013. irq       IRQ that parport is using for that port. This is in a separate
  1014. file to allow you to alter it by writing a new value in (IRQ
  1015. number or none).
  1016. ..............................................................................
  1017. 1.7 TTY info in /proc/tty
  1018. -------------------------
  1019. Information about  the  available  and actually used tty's can be found in the
  1020. directory /proc/tty.You'll  find  entries  for drivers and line disciplines in
  1021. this directory, as shown in Table 1-11.
  1022. Table 1-11: Files in /proc/tty
  1023. ..............................................................................
  1024. File          Content
  1025. drivers       list of drivers and their usage
  1026. ldiscs        registered line disciplines
  1027. driver/serial usage statistic and status of single tty lines
  1028. ..............................................................................
  1029. To see  which  tty's  are  currently in use, you can simply look into the file
  1030. /proc/tty/drivers:
  1031. > cat /proc/tty/drivers
  1032. pty_slave            /dev/pts      136   0-255 pty:slave
  1033. pty_master           /dev/ptm      128   0-255 pty:master
  1034. pty_slave            /dev/ttyp       3   0-255 pty:slave
  1035. pty_master           /dev/pty        2   0-255 pty:master
  1036. serial               /dev/cua        5   64-67 serial:callout
  1037. serial               /dev/ttyS       4   64-67 serial
  1038. /dev/tty0            /dev/tty0       4       0 system:vtmaster
  1039. /dev/ptmx            /dev/ptmx       5       2 system
  1040. /dev/console         /dev/console    5       1 system:console
  1041. /dev/tty             /dev/tty        5       0 system:/dev/tty
  1042. unknown              /dev/tty        4    1-63 console
  1043. 1.8 Miscellaneous kernel statistics in /proc/stat
  1044. -------------------------------------------------
  1045. Various pieces   of  information about  kernel activity  are  available in the
  1046. /proc/stat file.  All  of  the numbers reported  in  this file are  aggregates
  1047. since the system first booted.  For a quick look, simply cat the file:
  1048. > cat /proc/stat
  1049. cpu  2255 34 2290 22625563 6290 127 456 0 0
  1050. cpu0 1132 34 1441 11311718 3675 127 438 0 0
  1051. cpu1 1123 0 849 11313845 2614 0 18 0 0
  1052. intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
  1053. ctxt 1990473
  1054. btime 1062191376
  1055. processes 2915
  1056. procs_running 1
  1057. procs_blocked 0
  1058. softirq 183433 0 21755 12 39 1137 231 21459 2263
  1059. The very first  "cpu" line aggregates the  numbers in all  of the other "cpuN"
  1060. lines.  These numbers identify the amount of time the CPU has spent performing
  1061. different kinds of work.  Time units are in USER_HZ (typically hundredths of a
  1062. second).  The meanings of the columns are as follows, from left to right:
  1063. - user: normal processes executing in user mode
  1064. - nice: niced processes executing in user mode
  1065. - system: processes executing in kernel mode
  1066. - idle: twiddling thumbs
  1067. - iowait: waiting for I/O to complete
  1068. - irq: servicing interrupts
  1069. - softirq: servicing softirqs
  1070. - steal: involuntary wait
  1071. - guest: running a normal guest
  1072. - guest_nice: running a niced guest
  1073. The "intr" line gives counts of interrupts  serviced since boot time, for each
  1074. of the  possible system interrupts.   The first  column  is the  total of  all
  1075. interrupts serviced; each  subsequent column is the  total for that particular
  1076. interrupt.
  1077. The "ctxt" line gives the total number of context switches across all CPUs.
  1078. The "btime" line gives  the time at which the  system booted, in seconds since
  1079. the Unix epoch.
  1080. The "processes" line gives the number  of processes and threads created, which
  1081. includes (but  is not limited  to) those  created by  calls to the  fork() and
  1082. clone() system calls.
  1083. The "procs_running" line gives the total number of threads that are
  1084. running or ready to run (i.e., the total number of runnable threads).
  1085. The   "procs_blocked" line gives  the  number of  processes currently blocked,
  1086. waiting for I/O to complete.
  1087. The "softirq" line gives counts of softirqs serviced since boot time, for each
  1088. of the possible system softirqs. The first column is the total of all
  1089. softirqs serviced; each subsequent column is the total for that particular
  1090. softirq.
  1091. 1.9 Ext4 file system parameters
  1092. ------------------------------
  1093. Information about mounted ext4 file systems can be found in
  1094. /proc/fs/ext4.  Each mounted filesystem will have a directory in
  1095. /proc/fs/ext4 based on its device name (i.e., /proc/fs/ext4/hdc or
  1096. /proc/fs/ext4/dm-0).   The files in each per-device directory are shown
  1097. in Table 1-12, below.
  1098. Table 1-12: Files in /proc/fs/ext4/<devname>
  1099. ..............................................................................
  1100. File            Content
  1101. mb_groups       details of multiblock allocator buddy cache of free blocks
  1102. ..............................................................................
  1103. 2.0 /proc/consoles
  1104. ------------------
  1105. Shows registered system console lines.
  1106. To see which character device lines are currently used for the system console
  1107. /dev/console, you may simply look into the file /proc/consoles:
  1108. > cat /proc/consoles
  1109. tty0                 -WU (ECp)       4:7
  1110. ttyS0                -W- (Ep)        4:64
  1111. The columns are:
  1112. device               name of the device
  1113. operations           R = can do read operations
  1114. W = can do write operations
  1115. U = can do unblank
  1116. flags                E = it is enabled
  1117. C = it is preferred console
  1118. B = it is primary boot console
  1119. p = it is used for printk buffer
  1120. b = it is not a TTY but a Braille device
  1121. a = it is safe to use when cpu is offline
  1122. major:minor          major and minor number of the device separated by a colon
  1123. ------------------------------------------------------------------------------
  1124. Summary
  1125. ------------------------------------------------------------------------------
  1126. The /proc file system serves information about the running system. It not only
  1127. allows access to process data but also allows you to request the kernel status
  1128. by reading files in the hierarchy.
  1129. The directory  structure  of /proc reflects the types of information and makes
  1130. it easy, if not obvious, where to look for specific data.
  1131. ------------------------------------------------------------------------------
  1132. ------------------------------------------------------------------------------
  1133. CHAPTER 2: MODIFYING SYSTEM PARAMETERS
  1134. ------------------------------------------------------------------------------
  1135. ------------------------------------------------------------------------------
  1136. In This Chapter
  1137. ------------------------------------------------------------------------------
  1138. * Modifying kernel parameters by writing into files found in /proc/sys
  1139. * Exploring the files which modify certain parameters
  1140. * Review of the /proc/sys file tree
  1141. ------------------------------------------------------------------------------
  1142. A very  interesting part of /proc is the directory /proc/sys. This is not only
  1143. a source  of  information,  it also allows you to change parameters within the
  1144. kernel. Be  very  careful  when attempting this. You can optimize your system,
  1145. but you  can  also  cause  it  to  crash.  Never  alter kernel parameters on a
  1146. production system.  Set  up  a  development machine and test to make sure that
  1147. everything works  the  way  you want it to. You may have no alternative but to
  1148. reboot the machine once an error has been made.
  1149. To change  a  value,  simply  echo  the new value into the file. An example is
  1150. given below  in the section on the file system data. You need to be root to do
  1151. this. You  can  create  your  own  boot script to perform this every time your
  1152. system boots.
  1153. The files  in /proc/sys can be used to fine tune and monitor miscellaneous and
  1154. general things  in  the operation of the Linux kernel. Since some of the files
  1155. can inadvertently  disrupt  your  system,  it  is  advisable  to  read  both
  1156. documentation and  source  before actually making adjustments. In any case, be
  1157. very careful  when  writing  to  any  of these files. The entries in /proc may
  1158. change slightly between the 2.1.* and the 2.2 kernel, so if there is any doubt
  1159. review the kernel documentation in the directory /usr/src/linux/Documentation.
  1160. This chapter  is  heavily  based  on the documentation included in the pre 2.2
  1161. kernels, and became part of it in version 2.2.1 of the Linux kernel.
  1162. Please see: Documentation/sysctl/ directory for descriptions of these
  1163. entries.
  1164. ------------------------------------------------------------------------------
  1165. Summary
  1166. ------------------------------------------------------------------------------
  1167. Certain aspects  of  kernel  behavior  can be modified at runtime, without the
  1168. need to  recompile  the kernel, or even to reboot the system. The files in the
  1169. /proc/sys tree  can  not only be read, but also modified. You can use the echo
  1170. command to write value into these files, thereby changing the default settings
  1171. of the kernel.
  1172. ------------------------------------------------------------------------------
  1173. ------------------------------------------------------------------------------
  1174. CHAPTER 3: PER-PROCESS PARAMETERS
  1175. ------------------------------------------------------------------------------
  1176. 3.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj- Adjust the oom-killer score
  1177. --------------------------------------------------------------------------------
  1178. These file can be used to adjust the badness heuristic used to select which
  1179. process gets killed in out of memory conditions.
  1180. The badness heuristic assigns a value to each candidate task ranging from 0
  1181. (never kill) to 1000 (always kill) to determine which process is targeted.  The
  1182. units are roughly a proportion along that range of allowed memory the process
  1183. may allocate from based on an estimation of its current memory and swap use.
  1184. For example, if a task is using all allowed memory, its badness score will be
  1185. 1000.  If it is using half of its allowed memory, its score will be 500.
  1186. There is an additional factor included in the badness score: the current memory
  1187. and swap usage is discounted by 3% for root processes.
  1188. The amount of "allowed" memory depends on the context in which the oom killer
  1189. was called.  If it is due to the memory assigned to the allocating task's cpuset
  1190. being exhausted, the allowed memory represents the set of mems assigned to that
  1191. cpuset.  If it is due to a mempolicy's node(s) being exhausted, the allowed
  1192. memory represents the set of mempolicy nodes.  If it is due to a memory
  1193. limit (or swap limit) being reached, the allowed memory is that configured
  1194. limit.  Finally, if it is due to the entire system being out of memory, the
  1195. allowed memory represents all allocatable resources.
  1196. The value of /proc/<pid>/oom_score_adj is added to the badness score before it
  1197. is used to determine which task to kill.  Acceptable values range from -1000
  1198. (OOM_SCORE_ADJ_MIN) to +1000 (OOM_SCORE_ADJ_MAX).  This allows userspace to
  1199. polarize the preference for oom killing either by always preferring a certain
  1200. task or completely disabling it.  The lowest possible value, -1000, is
  1201. equivalent to disabling oom killing entirely for that task since it will always
  1202. report a badness score of 0.
  1203. Consequently, it is very simple for userspace to define the amount of memory to
  1204. consider for each task.  Setting a /proc/<pid>/oom_score_adj value of +500, for
  1205. example, is roughly equivalent to allowing the remainder of tasks sharing the
  1206. same system, cpuset, mempolicy, or memory controller resources to use at least
  1207. 50% more memory.  A value of -500, on the other hand, would be roughly
  1208. equivalent to discounting 50% of the task's allowed memory from being considered
  1209. as scoring against the task.
  1210. For backwards compatibility with previous kernels, /proc/<pid>/oom_adj may also
  1211. be used to tune the badness score.  Its acceptable values range from -16
  1212. (OOM_ADJUST_MIN) to +15 (OOM_ADJUST_MAX) and a special value of -17
  1213. (OOM_DISABLE) to disable oom killing entirely for that task.  Its value is
  1214. scaled linearly with /proc/<pid>/oom_score_adj.
  1215. The value of /proc/<pid>/oom_score_adj may be reduced no lower than the last
  1216. value set by a CAP_SYS_RESOURCE process. To reduce the value any lower
  1217. requires CAP_SYS_RESOURCE.
  1218. Caveat: when a parent task is selected, the oom killer will sacrifice any first
  1219. generation children with separate address spaces instead, if possible.  This
  1220. avoids servers and important system daemons from being killed and loses the
  1221. minimal amount of work.
  1222. 3.2 /proc/<pid>/oom_score - Display current oom-killer score
  1223. -------------------------------------------------------------
  1224. This file can be used to check the current score used by the oom-killer is for
  1225. any given <pid>. Use it together with /proc/<pid>/oom_score_adj to tune which
  1226. process should be killed in an out-of-memory situation.
  1227. 3.3  /proc/<pid>/io - Display the IO accounting fields
  1228. -------------------------------------------------------
  1229. This file contains IO statistics for each running process
  1230. Example
  1231. -------
  1232. test:/tmp # dd if=/dev/zero of=/tmp/test.dat &
  1233. [1] 3828
  1234. test:/tmp # cat /proc/3828/io
  1235. rchar: 323934931
  1236. wchar: 323929600
  1237. syscr: 632687
  1238. syscw: 632675
  1239. read_bytes: 0
  1240. write_bytes: 323932160
  1241. cancelled_write_bytes: 0
  1242. Description
  1243. -----------
  1244. rchar
  1245. -----
  1246. I/O counter: chars read
  1247. The number of bytes which this task has caused to be read from storage. This
  1248. is simply the sum of bytes which this process passed to read() and pread().
  1249. It includes things like tty IO and it is unaffected by whether or not actual
  1250. physical disk IO was required (the read might have been satisfied from
  1251. pagecache)
  1252. wchar
  1253. -----
  1254. I/O counter: chars written
  1255. The number of bytes which this task has caused, or shall cause to be written
  1256. to disk. Similar caveats apply here as with rchar.
  1257. syscr
  1258. -----
  1259. I/O counter: read syscalls
  1260. Attempt to count the number of read I/O operations, i.e. syscalls like read()
  1261. and pread().
  1262. syscw
  1263. -----
  1264. I/O counter: write syscalls
  1265. Attempt to count the number of write I/O operations, i.e. syscalls like
  1266. write() and pwrite().
  1267. read_bytes
  1268. ----------
  1269. I/O counter: bytes read
  1270. Attempt to count the number of bytes which this process really did cause to
  1271. be fetched from the storage layer. Done at the submit_bio() level, so it is
  1272. accurate for block-backed filesystems. <please add status regarding NFS and
  1273. CIFS at a later time>
  1274. write_bytes
  1275. -----------
  1276. I/O counter: bytes written
  1277. Attempt to count the number of bytes which this process caused to be sent to
  1278. the storage layer. This is done at page-dirtying time.
  1279. cancelled_write_bytes
  1280. ---------------------
  1281. The big inaccuracy here is truncate. If a process writes 1MB to a file and
  1282. then deletes the file, it will in fact perform no writeout. But it will have
  1283. been accounted as having caused 1MB of write.
  1284. In other words: The number of bytes which this process caused to not happen,
  1285. by truncating pagecache. A task can cause "negative" IO too. If this task
  1286. truncates some dirty pagecache, some IO which another task has been accounted
  1287. for (in its write_bytes) will not be happening. We _could_ just subtract that
  1288. from the truncating task's write_bytes, but there is information loss in doing
  1289. that.
  1290. Note
  1291. ----
  1292. At its current implementation state, this is a bit racy on 32-bit machines: if
  1293. process A reads process B's /proc/pid/io while process B is updating one of
  1294. those 64-bit counters, process A could see an intermediate result.
  1295. More information about this can be found within the taskstats documentation in
  1296. Documentation/accounting.
  1297. 3.4 /proc/<pid>/coredump_filter - Core dump filtering settings
  1298. ---------------------------------------------------------------
  1299. When a process is dumped, all anonymous memory is written to a core file as
  1300. long as the size of the core file isn't limited. But sometimes we don't want
  1301. to dump some memory segments, for example, huge shared memory. Conversely,
  1302. sometimes we want to save file-backed memory segments into a core file, not
  1303. only the individual files.
  1304. /proc/<pid>/coredump_filter allows you to customize which memory segments
  1305. will be dumped when the <pid> process is dumped. coredump_filter is a bitmask
  1306. of memory types. If a bit of the bitmask is set, memory segments of the
  1307. corresponding memory type are dumped, otherwise they are not dumped.
  1308. The following 7 memory types are supported:
  1309. - (bit 0) anonymous private memory
  1310. - (bit 1) anonymous shared memory
  1311. - (bit 2) file-backed private memory
  1312. - (bit 3) file-backed shared memory
  1313. - (bit 4) ELF header pages in file-backed private memory areas (it is
  1314. effective only if the bit 2 is cleared)
  1315. - (bit 5) hugetlb private memory
  1316. - (bit 6) hugetlb shared memory
  1317. Note that MMIO pages such as frame buffer are never dumped and vDSO pages
  1318. are always dumped regardless of the bitmask status.
  1319. Note bit 0-4 doesn't effect any hugetlb memory. hugetlb memory are only
  1320. effected by bit 5-6.
  1321. Default value of coredump_filter is 0x23; this means all anonymous memory
  1322. segments and hugetlb private memory are dumped.
  1323. If you don't want to dump all shared memory segments attached to pid 1234,
  1324. write 0x21 to the process's proc file.
  1325. $ echo 0x21 > /proc/1234/coredump_filter
  1326. When a new process is created, the process inherits the bitmask status from its
  1327. parent. It is useful to set up coredump_filter before the program runs.
  1328. For example:
  1329. $ echo 0x7 > /proc/self/coredump_filter
  1330. $ ./some_program
  1331. 3.5 /proc/<pid>/mountinfo - Information about mounts
  1332. --------------------------------------------------------
  1333. This file contains lines of the form:
  1334. 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
  1335. (1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)
  1336. (1) mount ID:  unique identifier of the mount (may be reused after umount)
  1337. (2) parent ID:  ID of parent (or of self for the top of the mount tree)
  1338. (3) major:minor:  value of st_dev for files on filesystem
  1339. (4) root:  root of the mount within the filesystem
  1340. (5) mount point:  mount point relative to the process's root
  1341. (6) mount options:  per mount options
  1342. (7) optional fields:  zero or more fields of the form "tag[:value]"
  1343. (8) separator:  marks the end of the optional fields
  1344. (9) filesystem type:  name of filesystem of the form "type[.subtype]"
  1345. (10) mount source:  filesystem specific information or "none"
  1346. (11) super options:  per super block options
  1347. Parsers should ignore all unrecognised optional fields.  Currently the
  1348. possible optional fields are:
  1349. shared:X  mount is shared in peer group X
  1350. master:X  mount is slave to peer group X
  1351. propagate_from:X  mount is slave and receives propagation from peer group X (*)
  1352. unbindable  mount is unbindable
  1353. (*) X is the closest dominant peer group under the process's root.  If
  1354. X is the immediate master of the mount, or if there's no dominant peer
  1355. group under the same root, then only the "master:X" field is present
  1356. and not the "propagate_from:X" field.
  1357. For more information on mount propagation see:
  1358. Documentation/filesystems/sharedsubtree.txt
  1359. 3.6 /proc/<pid>/comm  & /proc/<pid>/task/<tid>/comm
  1360. --------------------------------------------------------
  1361. These files provide a method to access a tasks comm value. It also allows for
  1362. a task to set its own or one of its thread siblings comm value. The comm value
  1363. is limited in size compared to the cmdline value, so writing anything longer
  1364. then the kernel's TASK_COMM_LEN (currently 16 chars) will result in a truncated
  1365. comm value.
  1366. 3.7 /proc/<pid>/task/<tid>/children - Information about task children
  1367. -------------------------------------------------------------------------
  1368. This file provides a fast way to retrieve first level children pids
  1369. of a task pointed by <pid>/<tid> pair. The format is a space separated
  1370. stream of pids.
  1371. Note the "first level" here -- if a child has own children they will
  1372. not be listed here, one needs to read /proc/<children-pid>/task/<tid>/children
  1373. to obtain the descendants.
  1374. Since this interface is intended to be fast and cheap it doesn't
  1375. guarantee to provide precise results and some children might be
  1376. skipped, especially if they've exited right after we printed their
  1377. pids, so one need to either stop or freeze processes being inspected
  1378. if precise results are needed.
  1379. 3.7 /proc/<pid>/fdinfo/<fd> - Information about opened file
  1380. ---------------------------------------------------------------
  1381. This file provides information associated with an opened file. The regular
  1382. files have at least two fields -- 'pos' and 'flags'. The 'pos' represents
  1383. the current offset of the opened file in decimal form [see lseek(2) for
  1384. details] and 'flags' denotes the octal O_xxx mask the file has been
  1385. created with [see open(2) for details].
  1386. A typical output is
  1387. pos:    0
  1388. flags:  0100002
  1389. The files such as eventfd, fsnotify, signalfd, epoll among the regular pos/flags
  1390. pair provide additional information particular to the objects they represent.
  1391. Eventfd files
  1392. ~~~~~~~~~~~~~
  1393. pos:    0
  1394. flags:  04002
  1395. eventfd-count:  5a
  1396. where 'eventfd-count' is hex value of a counter.
  1397. Signalfd files
  1398. ~~~~~~~~~~~~~~
  1399. pos:    0
  1400. flags:  04002
  1401. sigmask:    0000000000000200
  1402. where 'sigmask' is hex value of the signal mask associated
  1403. with a file.
  1404. Epoll files
  1405. ~~~~~~~~~~~
  1406. pos:    0
  1407. flags:  02
  1408. tfd:        5 events:       1d data: ffffffffffffffff
  1409. where 'tfd' is a target file descriptor number in decimal form,
  1410. 'events' is events mask being watched and the 'data' is data
  1411. associated with a target [see epoll(7) for more details].
  1412. Fsnotify files
  1413. ~~~~~~~~~~~~~~
  1414. For inotify files the format is the following
  1415. pos:    0
  1416. flags:  02000000
  1417. inotify wd:3 ino:9e7e sdev:800013 mask:800afce ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:7e9e0000640d1b6d
  1418. where 'wd' is a watch descriptor in decimal form, ie a target file
  1419. descriptor number, 'ino' and 'sdev' are inode and device where the
  1420. target file resides and the 'mask' is the mask of events, all in hex
  1421. form [see inotify(7) for more details].
  1422. If the kernel was built with exportfs support, the path to the target
  1423. file is encoded as a file handle.  The file handle is provided by three
  1424. fields 'fhandle-bytes', 'fhandle-type' and 'f_handle', all in hex
  1425. format.
  1426. If the kernel is built without exportfs support the file handle won't be
  1427. printed out.
  1428. If there is no inotify mark attached yet the 'inotify' line will be omitted.
  1429. For fanotify files the format is
  1430. pos:    0
  1431. flags:  02
  1432. fanotify flags:10 event-flags:0
  1433. fanotify mnt_id:12 mflags:40 mask:38 ignored_mask:40000003
  1434. fanotify ino:4f969 sdev:800013 mflags:0 mask:3b ignored_mask:40000000 fhandle-bytes:8 fhandle-type:1 f_handle:69f90400c275b5b4
  1435. where fanotify 'flags' and 'event-flags' are values used in fanotify_init
  1436. call, 'mnt_id' is the mount point identifier, 'mflags' is the value of
  1437. flags associated with mark which are tracked separately from events
  1438. mask. 'ino', 'sdev' are target inode and device, 'mask' is the events
  1439. mask and 'ignored_mask' is the mask of events which are to be ignored.
  1440. All in hex format. Incorporation of 'mflags', 'mask' and 'ignored_mask'
  1441. does provide information about flags and mask used in fanotify_mark
  1442. call [see fsnotify manpage for details].
  1443. While the first three lines are mandatory and always printed, the rest is
  1444. optional and may be omitted if no marks created yet.
  1445. ------------------------------------------------------------------------------
  1446. Configuring procfs
  1447. ------------------------------------------------------------------------------
  1448. 4.1 Mount options
  1449. ---------------------
  1450. The following mount options are supported:
  1451. hidepid=    Set /proc/<pid>/ access mode.
  1452. gid=        Set the group authorized to learn processes information.
  1453. hidepid=0 means classic mode - everybody may access all /proc/<pid>/ directories
  1454. (default).
  1455. hidepid=1 means users may not access any /proc/<pid>/ directories but their
  1456. own.  Sensitive files like cmdline, sched*, status are now protected against
  1457. other users.  This makes it impossible to learn whether any user runs
  1458. specific program (given the program doesn't reveal itself by its behaviour).
  1459. As an additional bonus, as /proc/<pid>/cmdline is unaccessible for other users,
  1460. poorly written programs passing sensitive information via program arguments are
  1461. now protected against local eavesdroppers.
  1462. hidepid=2 means hidepid=1 plus all /proc/<pid>/ will be fully invisible to other
  1463. users.  It doesn't mean that it hides a fact whether a process with a specific
  1464. pid value exists (it can be learned by other means, e.g. by "kill -0 $PID"),
  1465. but it hides process' uid and gid, which may be learned by stat()'ing
  1466. /proc/<pid>/ otherwise.  It greatly complicates an intruder's task of gathering
  1467. information about running processes, whether some daemon runs with elevated
  1468. privileges, whether other user runs some sensitive program, whether other users
  1469. run any program at all, etc.
  1470. gid= defines a group authorized to learn processes information otherwise
  1471. prohibited by hidepid=.  If you use some daemon like identd which needs to learn
  1472. information about processes information, just add identd to this group.

上面这篇文件时kernel/linux-3.10.y/Documentation/filesystems/proc.txt的原文,下面是翻译。注意翻译省去了一些个人认为不大需要的东西。

0. 目录

1 收集系统信息

1.1 进程子目录

1.2 内核数据

1.3 ide device in /proc/ide

1.4 网络信息  in /proc/net

1.5 SCSI info

1.6 并行串口(Parallel port)信息 in /proc/parport

1.7 TTY info in /proc/tty

1.8 内核统计 in /proc/stat

1.9 Ext4文件系统参数

2 改变系统参数

3 每一个进程参数

3.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_socre_adj 调整oom-killer分数

3.2 /proc/<pid>/oom_score 显示现在的oom-killer分数

3.3 /proc/<pid>/io  display the IO accounting fields

3.4 /proc/<pid>/coredump_filter core dump filtering setttings

3.5 /proc/<pid>/mountinfo 挂载信息

3.6 /proc/<pid>comm & /proc/<pid>/task/<tid>/comm

3.7 /proc/<pid>/task/<tid>/children  task children信息

3.8 /proc/<pid>/fdinfo/<fd> 打开文件信息

4 Configuring procfs 安装proc文件系统

4.1 挂载选项

1. 收集系统信息

这章我们将介绍proc这个文件系统提供的信息、架构、以及关于内核和进程的信息。

proc文件系统呈现了kernel的数据结构。同样它可以获取系统信息和改变内核在运行时的参数

1.1 进程子目录

进程信息都在proc/<pid>目录下

[plain] view plaincopy
  1. Table 1-1: Process specific entries in /proc
  2. ..............................................................................
  3. File       Content
  4. clear_refs Clears page referenced bits shown in smaps output
  5. cmdline    Command line arguments 启动命令参数
  6. cpu        Current and last cpu in which it was executed   (2.4)(smp)
  7. cwd        Link to the current working directory  当前工作目录
  8. environ    Values of environment variables 环境变量
  9. exe        Link to the executable of this process
  10. fd     Directory, which contains all file descriptors 各个fd的软链接
  11. maps       Memory maps to executables and library files    (2.4)
  12. mem        Memory held by this process
  13. root       Link to the root directory of this process 进程根目录
  14. stat       Process status 进程信息
  15. statm      Process memory status information 存储信息
  16. status     Process status in human readable form 进程信息
  17. wchan      If CONFIG_KALLSYMS is set, a pre-decoded wchan
  18. pagemap    Page table
  19. stack      Report full stack trace, enable via CONFIG_STACKTRACE
  20. smaps      a extension based on maps, showing the memory consumption of
  21. each mapping and flags associated with it
  22. ..............................................................................

举个例子:

[plain] view plaincopy
  1. >cat /proc/self/status
  2. Name:   cat
  3. State:  R (running)
  4. Tgid:   5452
  5. Pid:    5452
  6. PPid:   743
  7. TracerPid:      0                       (2.4)
  8. Uid:    501     501     501     501
  9. Gid:    100     100     100     100
  10. FDSize: 256
  11. Groups: 100 14 16
  12. VmPeak:     5004 kB
  13. VmSize:     5004 kB
  14. VmLck:         0 kB
  15. VmHWM:       476 kB
  16. VmRSS:       476 kB
  17. VmData:      156 kB
  18. VmStk:        88 kB
  19. VmExe:        68 kB
  20. VmLib:      1412 kB
  21. VmPTE:        20 kb
  22. VmSwap:        0 kB
  23. Threads:        1
  24. SigQ:   0/28578
  25. SigPnd: 0000000000000000
  26. ShdPnd: 0000000000000000
  27. SigBlk: 0000000000000000
  28. SigIgn: 0000000000000000
  29. SigCgt: 0000000000000000
  30. CapInh: 00000000fffffeff
  31. CapPrm: 0000000000000000
  32. CapEff: 0000000000000000
  33. CapBnd: ffffffffffffffff
  34. Seccomp:        0
  35. voluntary_ctxt_switches:        0
  36. nonvoluntary_ctxt_switches:     1

上面的信息可以同样适用ps命令得到。事实上,ps命令就是用了proc文件系统来获取信息。如果你要获取更多信息就要cat proc/<pid>/status

我们来看下上面各个数据的意义

[plain] view plaincopy
  1. Table 1-2: Contents of the status files (as of 2.6.30-rc7)
  2. ..............................................................................
  3. Field                       Content
  4. Name                        filename of the executable //文件名
  5. State                       state (R is running, S is sleeping, D is sleeping //状态 R S D Z等
  6. in an uninterruptible wait, Z is zombie,
  7. T is traced or stopped)
  8. Tgid                        thread group ID 线程租
  9. Pid                         process id 进程id
  10. PPid                        process id of the parent process 父进程
  11. TracerPid                   PID of process tracing this process (0 if not) 跟踪这个进程的pid
  12. Uid                         Real, effective, saved set, and  file system UIDs
  13. Gid                         Real, effective, saved set, and  file system GIDs
  14. FDSize                      number of file descriptor slots currently allocated 已经分配的fd数量
  15. Groups                      supplementary group list 属于哪些租
  16. VmPeak                      peak virtual memory size
  17. VmSize                      total program size
  18. VmLck                       locked memory size
  19. VmHWM                       peak resident set size ("high water mark")
  20. VmRSS                       size of memory portions
  21. VmData                      size of data, stack, and text segments
  22. VmStk                       size of data, stack, and text segments
  23. VmExe                       size of text segment
  24. VmLib                       size of shared library code
  25. VmPTE                       size of page table entries
  26. VmSwap                      size of swap usage (the number of referred swapents)
  27. Threads                     number of threads 线程数量
  28. SigQ                        number of signals queued/max. number for queue 队列中的信号数量/最大信号数量
  29. SigPnd                      bitmap of pending signals for the thread 暂停的信号bit位
  30. ShdPnd                      bitmap of shared pending signals for the process
  31. SigBlk                      bitmap of blocked signals 阻塞的信号bit位
  32. SigIgn                      bitmap of ignored signals 忽略的信号bit位
  33. SigCgt                      bitmap of catched signals 捕获到的信号bit位
  34. CapInh                      bitmap of inheritable capabilities
  35. CapPrm                      bitmap of permitted capabilities
  36. CapEff                      bitmap of effective capabilities
  37. CapBnd                      bitmap of capabilities bounding set
  38. Seccomp                     seccomp mode, like prctl(PR_GET_SECCOMP, ...)
  39. Cpus_allowed                mask of CPUs on which this process may run
  40. Cpus_allowed_list           Same as previous, but in "list format"
  41. Mems_allowed                mask of memory nodes allowed to this process
  42. Mems_allowed_list           Same as previous, but in "list format"
  43. voluntary_ctxt_switches     number of voluntary context switches
  44. nonvoluntary_ctxt_switches  number of non voluntary context switches
  45. ..............................................................................

statm文件关于进程更详细的存储使用情况

[plain] view plaincopy
  1. Table 1-3: Contents of the statm files (as of 2.6.8-rc3)
  2. ..............................................................................
  3. Field    Content
  4. size     total program size (pages)        (same as VmSize in status)
  5. resident size of memory portions (pages)   (same as VmRSS in status)
  6. shared   number of pages that are shared   (i.e. backed by a file)
  7. trs      number of pages that are 'code'   (not including libs; broken,
  8. includes data segment)
  9. lrs      number of pages of library        (always 0 on 2.6)
  10. drs      number of pages of data/stack     (including libs; broken,
  11. includes library text)
  12. dt       number of dirty pages         (always 0 on 2.6)
  13. ..............................................................................

stat文件关于进程自己更多详细的信息

[plain] view plaincopy
  1. Table 1-4: Contents of the stat files (as of 2.6.30-rc7)
  2. ..............................................................................
  3. Field          Content
  4. pid           process id
  5. tcomm         filename of the executable
  6. state         state (R is running, S is sleeping, D is sleeping in an
  7. uninterruptible wait, Z is zombie, T is traced or stopped)
  8. ppid          process id of the parent process
  9. pgrp          pgrp of the process
  10. sid           session id
  11. tty_nr        tty the process uses
  12. tty_pgrp      pgrp of the tty
  13. flags         task flags
  14. min_flt       number of minor faults
  15. cmin_flt      number of minor faults with child's
  16. maj_flt       number of major faults
  17. cmaj_flt      number of major faults with child's
  18. utime         user mode jiffies
  19. stime         kernel mode jiffies
  20. cutime        user mode jiffies with child's
  21. cstime        kernel mode jiffies with child's
  22. priority      priority level
  23. nice          nice level
  24. num_threads   number of threads 线程数量
  25. it_real_value (obsolete, always 0)
  26. start_time    time the process started after system boot 进程开始时间
  27. vsize         virtual memory size
  28. rss           resident set memory size
  29. rsslim        current limit in bytes on the rss
  30. start_code    address above which program text can run
  31. end_code      address below which program text can run
  32. start_stack   address of the start of the main process stack
  33. esp           current value of ESP
  34. eip           current value of EIP
  35. pending       bitmap of pending signals
  36. blocked       bitmap of blocked signals
  37. sigign        bitmap of ignored signals
  38. sigcatch      bitmap of catched signals
  39. wchan         address where process went to sleep
  40. 0             (place holder)
  41. 0             (place holder)
  42. exit_signal   signal to send to parent thread on exit
  43. task_cpu      which CPU the task is scheduled on
  44. rt_priority   realtime priority
  45. policy        scheduling policy (man sched_setscheduler)
  46. blkio_ticks   time spent waiting for block IO
  47. gtime         guest time of the task in jiffies
  48. cgtime        guest time of the task children in jiffies
  49. start_data    address above which program data+bss is placed
  50. end_data      address below which program data+bss is placed
  51. start_brk     address above which program heap can be expanded with brk()
  52. arg_start     address above which program command line is placed
  53. arg_end       address below which program command line is placed
  54. env_start     address above which program environment is placed
  55. env_end       address below which program environment is placed
  56. exit_code     the thread's exit_code in the form reported by the waitpid system call
  57. ..............................................................................

1.2 内核数据

和进程的目录结构类似, proc下面可以获取内核信息。

[plain] view plaincopy
  1. Table 1-5: Kernel info in /proc
  2. ..............................................................................
  3. File        Content
  4. apm         Advanced power management info
  5. buddyinfo   Kernel memory allocator information (see text) (2.5)
  6. bus         Directory containing bus specific information
  7. cmdline     Kernel command line        内核启动命令
  8. cpuinfo     Info about the CPU          cpu信息
  9. devices     Available devices (block and character)   设备包括字符和块设备
  10. dma         Used DMS channels
  11. filesystems Supported filesystems     支持的文件系统
  12. driver      Various drivers grouped here, currently rtc (2.4) 各种驱动
  13. execdomains Execdomains, related to security           (2.4)
  14. fb      Frame Buffer devices               (2.4)
  15. fs      File system parameters, currently nfs/exports  (2.4)
  16. ide         Directory containing info about the IDE subsystem
  17. interrupts  Interrupt usage
  18. iomem       Memory map                     (2.4)
  19. ioports     I/O port usage
  20. irq         Masks for irq to cpu affinity          (2.4)(smp?)
  21. isapnp      ISA PnP (Plug&Play) Info               (2.4)
  22. kcore       Kernel core image (can be ELF or A.OUT(deprecated in 2.4))
  23. kmsg        Kernel messages           内核消息
  24. ksyms       Kernel symbol table       内核符号表
  25. loadavg     Load average of last 1, 5 & 15 minutes
  26. locks       Kernel locks
  27. meminfo     Memory info      内存信息
  28. misc        Miscellaneous
  29. modules     List of loaded modules
  30. mounts      Mounted filesystems     挂载的文件系统
  31. net         Networking info (see text)          网络相关
  32. pagetypeinfo Additional page allocator information (see text)  (2.5)
  33. partitions  Table of partitions known to the system
  34. pci         Deprecated info of PCI bus (new way -> /proc/bus/pci/,
  35. decoupled by lspci                 (2.4)
  36. rtc         Real time clock      时钟
  37. scsi        SCSI info (see text)
  38. slabinfo    Slab pool info
  39. softirqs    softirq usage
  40. stat        Overall statistics
  41. swaps       Swap space utilization
  42. sys         See chapter 2
  43. sysvipc     Info of SysVIPC Resources (msg, sem, shm)      (2.4)
  44. tty         Info of tty drivers
  45. uptime      System uptime
  46. version     Kernel version
  47. video       bttv info of video resources           (2.4)
  48. vmallocinfo Show vmalloced areas
  49. ..............................................................................

可以通过下面看哪些cpu被中断

[plain] view plaincopy
  1. > cat /proc/interrupts
  2. CPU0
  3. 0:    8728810          XT-PIC  timer
  4. 1:        895          XT-PIC  keyboard
  5. 2:          0          XT-PIC  cascade
  6. 3:     531695          XT-PIC  aha152x
  7. 4:    2014133          XT-PIC  serial
  8. 5:      44401          XT-PIC  pcnet_cs
  9. 8:          2          XT-PIC  rtc
  10. 11:          8          XT-PIC  i82365
  11. 12:     182918          XT-PIC  PS/2 Mouse
  12. 13:          1          XT-PIC  fpu
  13. 14:    1232265          XT-PIC  ide0
  14. 15:          7          XT-PIC  ide1
  15. NMI:          0

伙伴信息

[plain] view plaincopy
  1. > cat /proc/buddyinfo
  2. Node 0, zone      DMA      0      4      5      4      4      3 ...
  3. Node 0, zone   Normal      1      0      0      1    101      8 ...
  4. Node 0, zone  HighMem      2      0      0      1      1      0 ...

内存信息

[plain] view plaincopy
  1. cat /proc/meminfo
  2. The "Locked" indicates whether the mapping is locked in memory or not.
  3. MemTotal:     16344972 kB
  4. MemFree:      13634064 kB
  5. Buffers:          3656 kB
  6. Cached:        1195708 kB
  7. SwapCached:          0 kB
  8. Active:         891636 kB
  9. Inactive:      1077224 kB
  10. HighTotal:    15597528 kB
  11. HighFree:     13629632 kB
  12. LowTotal:       747444 kB
  13. LowFree:          4432 kB
  14. SwapTotal:           0 kB
  15. SwapFree:            0 kB
  16. Dirty:             968 kB
  17. Writeback:           0 kB
  18. AnonPages:      861800 kB
  19. Mapped:         280372 kB
  20. Slab:           284364 kB
  21. SReclaimable:   159856 kB
  22. SUnreclaim:     124508 kB
  23. PageTables:      24448 kB
  24. NFS_Unstable:        0 kB
  25. Bounce:              0 kB
  26. WritebackTmp:        0 kB
  27. CommitLimit:   7669796 kB
  28. Committed_AS:   100056 kB
  29. VmallocTotal:   112216 kB
  30. VmallocUsed:       428 kB
  31. VmallocChunk:   111088 kB
  32. AnonHugePages:   49152 kB
  33. MemTotal: Total usable ram (i.e. physical ram minus a few reserved
  34. bits and the kernel binary code)
  35. MemFree: The sum of LowFree+HighFree
  36. Buffers: Relatively temporary storage for raw disk blocks
  37. shouldn't get tremendously large (20MB or so)
  38. Cached: in-memory cache for files read from the disk (the
  39. pagecache).  Doesn't include SwapCached
  40. SwapCached: Memory that once was swapped out, is swapped back in but
  41. still also is in the swapfile (if memory is needed it
  42. doesn't need to be swapped out AGAIN because it is already
  43. in the swapfile. This saves I/O)
  44. Active: Memory that has been used more recently and usually not
  45. reclaimed unless absolutely necessary.
  46. Inactive: Memory which has been less recently used.  It is more
  47. eligible to be reclaimed for other purposes
  48. HighTotal:
  49. HighFree: Highmem is all memory above ~860MB of physical memory
  50. Highmem areas are for use by userspace programs, or
  51. for the pagecache.  The kernel must use tricks to access
  52. this memory, making it slower to access than lowmem.
  53. LowTotal:
  54. LowFree: Lowmem is memory which can be used for everything that
  55. highmem can be used for, but it is also available for the
  56. kernel's use for its own data structures.  Among many
  57. other things, it is where everything from the Slab is
  58. allocated.  Bad things happen when you're out of lowmem.
  59. SwapTotal: total amount of swap space available
  60. SwapFree: Memory which has been evicted from RAM, and is temporarily
  61. on the disk
  62. Dirty: Memory which is waiting to get written back to the disk
  63. Writeback: Memory which is actively being written back to the disk
  64. AnonPages: Non-file backed pages mapped into userspace page tables
  65. AnonHugePages: Non-file backed huge pages mapped into userspace page tables
  66. Mapped: files which have been mmaped, such as libraries
  67. Slab: in-kernel data structures cache
  68. SReclaimable: Part of Slab, that might be reclaimed, such as caches
  69. SUnreclaim: Part of Slab, that cannot be reclaimed on memory pressure
  70. PageTables: amount of memory dedicated to the lowest level of page
  71. tables.
  72. NFS_Unstable: NFS pages sent to the server, but not yet committed to stable
  73. storage
  74. Bounce: Memory used for block device "bounce buffers"
  75. WritebackTmp: Memory used by FUSE for temporary writeback buffers
  76. CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'),
  77. this is the total amount of  memory currently available to
  78. be allocated on the system. This limit is only adhered to
  79. if strict overcommit accounting is enabled (mode 2 in
  80. 'vm.overcommit_memory').
  81. The CommitLimit is calculated with the following formula:
  82. CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap
  83. For example, on a system with 1G of physical RAM and 7G
  84. of swap with a `vm.overcommit_ratio` of 30 it would
  85. yield a CommitLimit of 7.3G.
  86. For more details, see the memory overcommit documentation
  87. in vm/overcommit-accounting.
  88. Committed_AS: The amount of memory presently allocated on the system.
  89. The committed memory is a sum of all of the memory which
  90. has been allocated by processes, even if it has not been
  91. "used" by them as of yet. A process which malloc()'s 1G
  92. of memory, but only touches 300M of it will only show up
  93. as using 300M of memory even if it has the address space
  94. allocated for the entire 1G. This 1G is memory which has
  95. been "committed" to by the VM and can be used at any time
  96. by the allocating application. With strict overcommit
  97. enabled on the system (mode 2 in 'vm.overcommit_memory'),
  98. allocations which would exceed the CommitLimit (detailed
  99. above) will not be permitted. This is useful if one needs
  100. to guarantee that processes will not fail due to lack of
  101. memory once that memory has been successfully allocated.
  102. VmallocTotal: total size of vmalloc memory area
  103. VmallocUsed: amount of vmalloc area which is used
  104. VmallocChunk: largest contiguous block of vmalloc area which is free
  105. ..............................................................................

1.4 网络信息

[plain] view plaincopy
  1. Table 1-9: Network info in /proc/net
  2. ..............................................................................
  3. File          Content
  4. arp           Kernel  ARP table
  5. dev           network devices with statistics
  6. dev_mcast     the Layer2 multicast groups a device is listening too
  7. (interface index, label, number of references, number of bound
  8. addresses).
  9. dev_stat      network device status
  10. ip_fwchains   Firewall chain linkage
  11. ip_fwnames    Firewall chain names
  12. ip_masq       Directory containing the masquerading tables
  13. ip_masquerade Major masquerading table
  14. netstat       Network statistics         网络统计
  15. raw           raw device statistics
  16. route         Kernel routing table
  17. rpc           Directory containing rpc info
  18. rt_cache      Routing cache
  19. snmp          SNMP data
  20. sockstat      Socket statistics
  21. tcp           TCP  sockets
  22. udp           UDP sockets
  23. unix          UNIX domain sockets
  24. wireless      Wireless interface data (Wavelan etc)
  25. igmp          IP multicast addresses, which this host joined
  26. psched        Global packet scheduler parameters.
  27. netlink       List of PF_NETLINK sockets
  28. ip_mr_vifs    List of multicast virtual interfaces
  29. ip_mr_cache   List of multicast routing cache
  30. ..............................................................................

1.8 内核信息

内核信息可以 通过/proc/stat文件:

[plain] view plaincopy
  1. > cat /proc/stat
  2. cpu  2255 34 2290 22625563 6290 127 456 0 0
  3. cpu0 1132 34 1441 11311718 3675 127 438 0 0
  4. cpu1 1123 0 849 11313845 2614 0 18 0 0
  5. intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]
  6. ctxt 1990473
  7. btime 1062191376
  8. processes 2915
  9. procs_running 1
  10. procs_blocked 0
  11. softirq 183433 0 21755 12 39 1137 231 21459 2263

下面是cpux从左到右每行意思

[plain] view plaincopy
  1. - user: normal processes executing in user mode
  2. - nice: niced processes executing in user mode
  3. - system: processes executing in kernel mode
  4. - idle: twiddling thumbs
  5. - iowait: waiting for I/O to complete
  6. - irq: servicing interrupts
  7. - softirq: servicing softirqs
  8. - steal: involuntary wait
  9. - guest: running a normal guest
  10. - guest_nice: running a niced guest

2. 每个进程信息

3.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj

这个用来调整杀进程用

3.2 /proc/<pid>/oom_score

显示这个分数用来杀进程用的

proc文件系统介绍相关推荐

  1. 获取系统信息3——proc文件系统介绍和使用

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 一.proc文件系统介绍 1.操作系统级别的调试 简单程序,可以单步调试:(多线程不行,linux内核不行) 复杂 ...

  2. proc文件系统介绍以及常见使用方法

    1.什么是proc文件系统 (1)proc是虚拟文件系统,虚拟的意思就是proc文件系统里的文件不对应硬盘上任何文件,我们用去查看proc目录下的文件大小都是零: (2)proc文件系统是开放给上层了 ...

  3. 【Unix/Linux】文件系统介绍 入门

    文件系统是一个操作系统最重要的部分之一.下文以Linux为例介绍以下Unix操作系统的文件系统. Unix文件系统介绍 Unix中的文件类型 目录详述 重要的目录 主目录和工作目录.绝对路径名和相对路 ...

  4. linux的根文件系统中的proc文件夹详解

    什么是proc文件系统    |linux /proc目录介绍|proc中文手册 proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接 ...

  5. proc文件的简单读写

    在开发模块功能时,需要用到一些调试或者传值给模块的方法,最简单的就是构造一个proc文件,然后配置传值或查看 . 如下提供了一个简单模板,需要时可以直接复制过去使用. /* Init a test p ...

  6. C语言循环遍历文件夹查找文件内容(搜素/proc文件夹下的内容获取进程pid)

    参考文章:通过搜素/proc文件夹下的内容获取进程pid

  7. proc文件(OLD)

    写一个模块测试proc文件的读写: 1 #include linux/module.h 2 #include linux/kernel.h 3 #include linux/proc_fs.h 4 # ...

  8. 服务器proc文件,特殊文件系统proc

    1. 对kern_mout()进行解析: (1) 调用函数get_unnamed_dev()为文件系统/proc文件系统分配一个设备号. (2) 调用函数read_super对应的函数proc_rea ...

  9. Linux 小知识翻译 - 「/proc 文件夹」

    这次聊聊 「/proc 文件夹」. /proc 文件夹用来保管系统状态相关的文件的特殊文件夹,这个文件夹中有的文件只是内存上的虚拟文件. /proc 文件夹下有些文件可以反映各个进程的运行状态.所以说 ...

最新文章

  1. Rocksdb 的优秀代码(一) -- 工业级分桶算法实现分位数p50,p99,p9999
  2. vue获取dom元素注意问题
  3. keil5软件仿真出现unknown signal解决方法。
  4. 跳一跳python源码_使用Python实现跳一跳自动跳跃功能
  5. java中toarray()的 用法_java容器中toArray的用法
  6. POJ - 2942 Knights of the Round Table (双连通分量)
  7. hdu 2196(树的最长链)
  8. 智慧城市知识图谱模型与本体构建方法
  9. 零基础学python书籍-非IT行业,零基础自学Python,选什么书?
  10. ubuntu下rz,sz命令用法
  11. C语言程序设计如何输入两行,求c语言高手编一个程序,题目要求如下: 输入有多组数据。 每组数据两行。 第一行包含一个正整数n(...
  12. 用DOSBox运行老游戏
  13. 2021年8月NOC全国中小学信息技术创新与实践大赛 软件创意编程小学高年级组Python决赛题解析
  14. 规格说明书:吉林市一日游
  15. loadRunner通过谷歌浏览器代理录制脚本
  16. 基础为零?如何将 C++ 编译成 WebAssembly
  17. 文件服务器之:NFS服务器
  18. C#高效编程:改进C#代码的50个行之有效的办法(第2版)(奋斗的小鸟)_PDF 电子书
  19. safari保存视频_如何使用Safari的“阅读列表”保存文章供以后使用
  20. 1、野火freertos学习笔记

热门文章

  1. 原创整理《考研英语词汇的逻辑》精选词汇-思维导图
  2. 一直又爱又恨的jqueryValidate,看到一个还不错的laber.error样式
  3. C语言万年历(n排)
  4. python读取日志匹配日志信息(二)
  5. 短链接java代码_java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java
  6. 基本的信号——矩阵脉冲信号(门函数)
  7. Fremont弗里蒙特_US机房测速
  8. ROS 问题(topic types do not match、topic datatype/md5sum not match、msg xxx have changed. rerun cmake)
  9. 给客户一个“无法拒绝”的SaaS?——6年三个SaaS项目后的感触
  10. 是时候来了解android7了:通知直接回复