我不确定这里是不是提出这个问题的正确地方,不过我想说的是:
我正在尝试理解高度线程化的服务器进程的 /proc/pid/sched 和 /proc/pid/task/tid/sched 文件,但是我无法找到如何解释此文件的良好解释(这里仅列举几点:http://knol.google.com/k/linux-performance-tuning-and-measurement#). 我假设 procfs 中的这个条目与使用 CFS 调度程序运行的较新版本的内核有关?
CentOS 发行版运行在带有 preempt rt 补丁的 2.6.24.7-149.el5rt 内核版本上。
有什么想法吗?
答案1
您可以在本文中找到有关 /proc/[pid]/sched 文件的更多文档:
http://lwn.net/Articles/242900/
查看注释。大多数字段都有解释。
附录:该文件是可写入的,以重置统计数据。
答案2
也许“man proc”是值得一读的地方!摘自手册:
/proc/[pid]/任务
(自 Linux 2.6.0-test6 起)此目录包含进程中每个线程的一个子目录。每个子目录的名称是线程的数字线程 ID ([tid])(请参阅 gettid(2))。在每个子目录中,都有一组文件,其名称和内容与 /proc/[pid] 目录下的文件相同。对于所有线程共享的属性,task/[tid] 子目录下每个文件的内容将与父 /proc/[pid] 目录中的相应文件相同(例如,在多线程进程中,所有 task/[tid]/cwd 文件的值都将与父目录中的 /proc/[pid]/cwd 文件相同,因为进程中的所有线程共享一个工作目录)。对于每个线程不同的属性,task/[tid] 下的相应文件可能具有不同的值(例如,每个线程的 task/[tid]/status 文件中的各个字段可能不同)。在多线程进程中,如果主线程已经终止(通常通过调用 pthread_exit(3)),则 /proc/[pid]/task 目录的内容不可用。
因此,基本上理解 /proc/pid/task/ 意味着理解 proc 本身。