linux调度器(十)——调度器/proc信息解读
注下面的时间或时刻都是从rq->clock中获得的,而这个值是由update_rq_clock底层cpu来更新的。并且很多信息是需要内核配置CONFIG_SCHEDSTATS才有。
/proc/<pid>/sched
大多数字段的计算在sched.c及sched_fair.c里,在这两个文件里搜索相应的字段就能得到相应的计算方法。
/proc/<pid>/schedstat
$cat /proc/28733/schedstat 5726055470233 30451531 6336 |
该信息的入口在fs/proc/base.c的proc_pid_schedstat函数里。
/proc/<pid>/status
$cat /proc/28733/status Name: cpu_test State: R (running) Tgid: 28733 Pid: 28733 PPid: 5573 TracerPid: 0 Uid: 52170 52170 52170 52170 // uid euid suid fsuid Gid: 100 100 100 100 // gid egid sgid fsgid Utrace: 0 FDSize: 256 Groups: 100 19051 //启动该进程的用户所属的组的id,并不是组调度的组 VmPeak: 3976 kB VmSize: 3912 kB //任务虚拟地址空间的大小 (total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页,该值也是top的VIRT字段 VmLck: 0 kB //任务已经锁住的物理内存的大小。锁住的物理内存不能交换到硬盘 (locked_vm) VmHWM: 328 kB //文件内存映射和匿名内存映射的大小 VmRSS: 328 kB //应用程序正在使用的物理内存的大小,就是用top的res字段 VmData: 44 kB //程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据; (total_vm-shared_vm-stack_vm) VmStk: 88 kB //任务在用户态的栈的大小 (stack_vm) VmExe: 4 kB //程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 (end_code-start_code) VmLib: 1700 kB //被映像到任务的虚拟内存空间的库的大小 (exec_lib) VmPTE: 32 kB //该进程的所有页表的大小,单位:kb VmSwap: 0 kB Threads: 1 //线程数 SigQ: 1/193060 //待处理信号的个数 SigPnd: 0000000000000000 //屏蔽位,存储了该线程的待处理信号 ShdPnd: 0000000000000000 //屏蔽位,存储了该线程组的待处理信号 SigBlk: 0000000000000000 //存放被阻塞的信号 SigIgn: 0000000000000000 //存放被忽略的信号 SigCgt: 0000000000000000 //存放被捕捉到的信号 CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: ffffffffffffffff Cpus_allowed: 000008 //可以使用的cpu bit Cpus_allowed_list: 3 //可以使用的cpu id list Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 //可使用的mem Mems_allowed_list: 0 //可使用的mem list voluntary_ctxt_switches: 0 //主动的切换 nonvoluntary_ctxt_switches: 8310 //被动的切换 |
入口在fs/proc/array.c的proc_pid_status函数里,参考http://www.kerneltravel.net/?p=294
/proc/<pid>/stat
在内核中,该文件的内容由do_task_stat函数(fs/proc/array.c)写。主要操作是
注:这个输出的中间自动填充了个0,在22 start_time前。参考http://www.kerneltravel.net/?p=291
/proc/sched_debug
这个打印出所有cpu的信息,这里我们过滤出cpu3来解释
该信息的打印入口在sched_debug.c的sched_debug_show函数。
注:上面的很多信息是从网上搜索,再加上自己对调度器相关字段的验证,其它的内容没有验证
参考资料
http://chxxxyg.blog.163.com/blog/static/1502811932012912546208/
http://blog.csdn.net/chenyu105/article/details/7068758
proc目录解析: http://www.kerneltravel.net/?p=294
rq结构的注释:http://blog.csdn.net/bullbat/article/details/7160246
linux调度器(十)——调度器/proc信息解读相关推荐
- Linux进程核心调度器之主调度器schedule--Linux进程的管理与调度(十九)
日期 内核版本 架构 作者 GitHub CSDN 2016-06-30 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 ...
- Linux系统核心调度器——周期性调度器详解
日期 内核版本 架构 作者 内容 2019-5-13 Linux-2.6.32 X86 Bystander Linux进程调度 1 绪论 在<Linux系统进程调度--调度架构详细分析>一 ...
- 【Linux 内核】CFS 调度器 ⑤ ( CFS 调度器类 fair_sched_class 源码 | next 赋值 | enqueue_task 赋值 | dequeue_task 赋值 )
文章目录 一.调度器类 sched_class 简介 二.CFS 调度器类源码 三.next 赋值 四.enqueue_task 赋值 五.dequeue_task 赋值 一.调度器类 sched_c ...
- 【Linux 内核】CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器、周期性调度器 | 调度器类 )
文章目录 一.调度子系统组件模块 二.主调度器.周期性调度器 三.调度器类 一.调度子系统组件模块 调度器 需要对 被调度的进程 进行 排序 和 调度管理 , 进程管理过程需要 调度器 的 组件模块 ...
- 【Linux 内核】CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )
文章目录 一.CFS 调度器概念 ( 完全公平调度器 ) 二.CFS 调度器虚拟时钟概念 ( Virtual Runtime ) 三.进程优先级 ( 调度优先级 | 静态优先级 | 正常优先级 | 实 ...
- 【Linux 内核】调度器 ② ( sched_class 调度类结构体源码 | 源码路径 linux-5.6.18\kernel\sched\sched.h )
文章目录 一.调度器 二.sched_class 调度类结构体 一.调度器 上一篇博客 [Linux 内核]调度器 ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 ...
- 【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )
文章目录 一.调度器 0.调度器概念 1.调度器目的 2.调度器主要工作 3.调度器位置 4.进程优先级 5.抢占式调度器 二.Linux 内核进程状态 API 简介 三.Linux 进程状态 一.调 ...
- 深入理解Linux内核之主调度器
进程上下文切换 上下文切换动作,来保存上一个进程的"上下文",恢复下一个进程的"上下文",主要包括进程地址空间切换和处理器状态切换. 注:这里的上下文实际上是指 ...
- Linux调度器 - deadline调度器
一.概述 实时系统是这样的一种计算系统:当事件发生后,它必须在确定的时间范围内做出响应.在实时系统中,产生正确的结果不仅依赖于系统正确的逻辑动作,而且依赖于逻辑动作的时序.换句话说,当系统收到某个请求 ...
- linux cfs 参数设置,Linux CFS如何处理周期性调度器、CFS的周期性调度及总结
1. CFS如何处理周期性调度器 周期性调度器的工作由scheduler_tick函数完成(定义在kernel/sched/core.c, line 2910), 在scheduler_tick中周期 ...
最新文章
- Github上删除仓库、项目方法演示
- 李开复开发的国际象棋软件
- 用eclispe远程调试tomcat war包形式
- windows改变php版本
- python2.6 2.7 升级成3.6之后yum
- SAP Spartacus build error之后的retrigger方式
- 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
- 6种创新难以打动人心
- 写ios系统和安卓系统的人到底有多牛?
- Semaphore 里面居然有这么一个大坑!
- 【python游戏编程之旅】第一篇---初识pygame
- 用python分析世界各国的 “幸福指数”。
- DDCTFMulTzor-xoortol的使用
- Python——Dict类型
- 7-27 冒泡法排序 (20分)
- Problem L: 数羊————思维不严谨
- 637-字符串模式匹配-BF算法
- Latex学习笔记——总篇(入门、图片、表格、数学公式、伪代码、代码块、参考文献)
- 天蝎项目整机柜服务器解决方案,天蝎整机柜服务器标准符合性测试已启动
- 怎么保存python文件_pycharm怎么保存py文件