linux概念之/proc详解2
http://blog.chinaunix.net/uid-1835494-id-3070465.html proc/x:1/sched
/proc/sched_debug
/proc/schedstat 总
/proc/pid/schedstat 分
/proc/pid/sched
[root@250-shiyan 27227]# cat sched mfsmount (27227, #threads: 13) --------------------------------------------------------- se.exec_start : 4298337843.907125 se.vruntime : 4714787.554887 se.sum_exec_runtime : 23.716516 se.wait_start : 0.000000 se.sleep_start : 4298337843.907125 se.block_start : 0.000000 se.sleep_max : 1.655287 se.block_max : 0.000000 se.exec_max : 1.003137 se.slice_max : 3.550532 se.wait_max : 0.310097 se.wait_sum : 0.745722 se.wait_count : 11 se.iowait_sum : 494.469927 se.iowait_count : 131 sched_info.bkl_count : 1 se.nr_migrations : 0 se.nr_migrations_cold : 0 se.nr_failed_migrations_affine : 0 se.nr_failed_migrations_running : 0 se.nr_failed_migrations_hot : 0 se.nr_forced_migrations : 0 se.nr_wakeups : 1 se.nr_wakeups_sync : 1 se.nr_wakeups_migrate : 0 se.nr_wakeups_local : 1 se.nr_wakeups_remote : 0 se.nr_wakeups_affine : 0 se.nr_wakeups_affine_attempts : 0 se.nr_wakeups_passive : 0 se.nr_wakeups_idle : 0 avg_atom : 2.371651 avg_per_cpu : 0.000001 nr_switches : 10 nr_voluntary_switches : 2 nr_involuntary_switches : 8 se.load.weight : 71755 policy : 0 prio : 101 clock-delta : 135 [root@250-shiyan 27227]# cat schedstat 23716516 745722 10 [root@250-shiyan 27227]# cat /proc/schedstat version 15 timestamp 9130051710 cpu0 0 0 90294274 19486189 49453373 49453373 5270546755145 379982355396 70804217 [root@250-shiyan 27227]# cat /proc/sched_debug Sched Debug Version: v0.09, 2.6.32-431.el6.x86_64 #1 now at 4835548701.686494 msecs .jiffies : 9130215997 .sysctl_sched_latency : 5.000000 .sysctl_sched_min_granularity : 1.000000 .sysctl_sched_wakeup_granularity : 1.000000 .sysctl_sched_child_runs_first : 0.000000 .sysctl_sched_features : 3183 .sysctl_sched_tunable_scaling : 1 (logaritmic) cpu#0, 3092.974 MHz .nr_running : 1 .load : 1024 .nr_switches : 90292999 .nr_load_updates : 21243167 .nr_uninterruptible : 0 .next_balance : 9130.216230 .curr->pid : 1037 .clock : 4834502548.387724 .cpu_load[0] : 1024 .cpu_load[1] : 512 .cpu_load[2] : 256 .cpu_load[3] : 128 .cpu_load[4] : 64 .yld_count : 0 .sched_switch : 0 .sched_count : 90296954 .sched_goidle : 19487350 .avg_idle : 994034 .ttwu_count : 49454858 .ttwu_local : 49454858 .bkl_count : 706 cfs_rq[0]:/ .exec_clock : 5263171.784834 .MIN_vruntime : 0.000001 .min_vruntime : 5035599.468468 .max_vruntime : 0.000001 .spread : 0.000000 .spread0 : 0.000000 .nr_spread_over : 7543 .nr_running : 1 .load : 1024 .load_avg : 0.000000 .load_period : 0.000000 .load_contrib : 0 .load_tg : 0 rt_rq[0]:/ .rt_nr_running : 0 .rt_throttled : 0 .rt_time : 0.000000 .rt_runtime : 950.000000 runnable tasks: task PID tree-key switches prio exec-runtime sum-exec sum-sleep ---------------------------------------------------------------------------------------------------------- R cat 1037 5035599.468468 1 120 5035599.468468 0.470952 0.000000 / [root@250-shiyan 27227]# /proc/pid/schedstat /proc/pid/sched /proc/schedstat /proc/sched_debug proc的调度相关字段解释 2.6.32内核 CONFIG_SCHED_DEBUG (需要配置CONFIG_SCHEDSTAT才能显示更多信息) /proc/pid/sched 显示信息解释如下: ata/2 (111, #threads: 1) --------------------------------------------------------- se.exec_start : 1159.482823 //此进程最近被调度到的开始执行时刻 ns se.vruntime : -1.044234 //虚拟运行时间,cfs调度用 se.sum_exec_runtime : 0.000000 //累计运行时间 se.avg_overlap : 0.000000 se.avg_wakeup : 3.617187 //当前进程最近一次调用try_to_wake_up为止的单次执行时间 se.avg_running : 0.000000 //平均单次执行时间 //以下开始需要同时配置CONFIG_SCHEDSTATS才能显示 se.wait_start : 0.000000 //最近一次当前进程被入队的时刻 cfs使用 se.sleep_start : 1159.482823 //此进程最近一次被从队列里取出,并被置S状态的时刻 se.block_start : 0.000000 //此进程最近一次被从队列里取出,并被置D状态的时刻 se.sleep_max : 0.000000 //最长处于S状态时间 se.block_max : 0.482651 //最长处于D状态时间 se.exec_max : 0.000000 //最长单次执行时间 se.slice_max : 0.000000 //曾经获得时间片的最长时间 (当cpu load过高时开始计算) se.wait_max : 0.000000 //最长在就绪队列里的等待时间 se.wait_sum : 0.000000 //累计在就绪队列里的等待时间 se.wait_count : 2 //累计等待次数 (被出队的次数) cfs使用,当被选中做下一个待运行进程时(set_next_entity),等待结束 se.iowait_sum : 0.000000 //io等待时间 se.iowait_count : 0 //io等待次数 io_schedule调用次数 sched_info.bkl_count : 0 //此进程大内核锁调用次数 se.nr_migrations : 2 //需要迁移当前进程到其他cpu时累加此字段 se.nr_migrations_cold : 0 //2.6.32 代码里赋值都是0 se.nr_failed_migrations_affine : 0 //进程设置了cpu亲和,进程迁移时检查失败的次数 se.nr_failed_migrations_running : 0 //当前进程出入R,不运行迁移的次数 se.nr_failed_migrations_hot : 0 //当前进程因为是cache hot导致迁移失败的次数 se.nr_forced_migrations : 0 //在当前进程cache hot下,由于负载均衡尝试多次失败,强行进行迁移的次数 se.nr_forced2_migrations : 1 //在当前进程是cache hot下,设置此进程进行迁移的次数 se.nr_wakeups : 1 // 被唤醒的累计次数 se.nr_wakeups_sync : 0 // 同步唤醒次数,即a唤醒b,a立刻睡眠,b被唤醒的次数 /* waker goes to sleep after wakup */ se.nr_wakeups_migrate : 0 //被唤醒得到调度的当前cpu,不是之前睡眠的cpu的次数 se.nr_wakeups_local : 0 //被本地唤醒的次数 se.nr_wakeups_remote : 1 //其他唤醒累计次数 se.nr_wakeups_affine : 0 //考虑了任务的cache亲和性的唤醒次数 se.nr_wakeups_affine_attempts : 0 //尝试进行考虑了任务的cache亲和性的唤醒次数 se.nr_wakeups_passive : 0 //2.6.32 代码里赋值都是0 se.nr_wakeups_idle : 0 //2.6.32 代码里赋值都是0 avg_atom : 0.000000 //本进程平均切换耗时 avg_per_cpu : 0.000000 //如果本进程曾经被推或者拉到其他cpu上,则计算每个cpu上的平均耗时 nr_switches : 2 //主动切换和被动切换的累计次数 nr_voluntary_switches : 2 //主动切换次数 nr_involuntary_switches : 0 //被动切换次数 se.load.weight : 1024 //权重,和负载均衡有关 policy : 0 //进程属性,0为非实时 #define SCHED_NORMAL 0 #define SCHED_FIFO 1 #define SCHED_RR 2 #define SCHED_BATCH 3 #define SCHED_IDLE 5 prio : 120 //优先级 clock-delta : 165 //测试用 /proc/sched_debug 此为cpu15运行队列的调度信息: cpu#15, 1595.968 MHz .nr_running : 0 //运行队列里处于就绪态进程的数目 .load : 0 //当前cpu负载 .nr_switches : 120820818 //切换累计次数 .nr_load_updates : 674238115 //cpu权重更新的次数,和负载均衡有关 .nr_uninterruptible : -30 .next_balance : 8012.054504 //下次执行定时负载均衡的时间 .curr->pid : 0 //当前运行进程 .clock : 3717386659.081997 //当前cpu运行队列时刻 .cpu_load[0] : 0 //以下为cpu历史负载数组 .cpu_load[1] : 0 .cpu_load[2] : 0 .cpu_load[3] : 0 .cpu_load[4] : 0 //以下开始需要同时配置CONFIG_SCHEDSTATS才记录 .yld_count : 8236 //调yield的次数 .sched_switch : 0 .sched_count : 122061248 //调用schedule的次数,>=nr_switches .sched_goidle : 30689623 //切换到idle进程的次数 .avg_idle : 1000000 //cpu处于idle的平均时间 .ttwu_count : 46238267 //此cpu try_to_wake_up唤醒进程的次数 .ttwu_local : 30988951 //本地唤醒的次数,即进程睡眠前所在cpu为当前cpu .bkl_count : 2090 //此cpu上大内核锁调用次数 cfs_rq[15]:/ .exec_clock : 545099081.498339 //非实时线程得到调度的累计时间 .MIN_vruntime : 0.000001 //当前cfs 运行队列里虚拟时间最小的那个进程的vtime .min_vruntime : 770437019.732761 //当前cfs 运行队列虚拟时间下限,当处于rb树最左边进程运行虚拟时间,减去此值大于一个阈值后抢占当前进程 .max_vruntime : 0.000001 // 2.6.32里没有找到这个字段 .spread : 0.000000 .spread0 : 407973445.279093 //cpu0上的min_vruntime与当前cpu的min_vruntime差值 .nr_running : 0 //当前cpu非实时进程在就绪队列中的个数 .load : 0 //非实时进程负载 .nr_spread_over : 6811 //当前cpu中,长时间非实时进程由一个进程占有的次数 s64 d = se->vruntime - cfs_rq->min_vruntime; if (d > 3*sysctl_sched_latency) schedstat_inc(cfs_rq, nr_spread_over); .shares : 0 rt_rq[15]:/ .rt_nr_running : 0 //处于就绪队列的实时进程个数 .rt_throttled : 0 //是否限制实时进程的带宽运行时间,实时进程是否需要让出cpu .rt_time : 0.000000 //做实时进程带宽分析用 .rt_runtime : 950.000000 //做实时进程带宽分析用 另外,还有一个: /proc/schedstat 字段详细解释文档在内核目录的: documentation/scheduler/sched-stats.txt
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。