可以对读取到的/proc/PID/stat
大量信息进行处理。我想看看这个进程使用了多少百分比的 CPU 功率。这里有很多变量(utime、stime、cuttime、cstime、gtime、cgtime),但它们都在 jiffies 中。 jiffy 的问题取决于当前 CPU 的速度。然而,IPS(每秒指令数)取决于指令集以及我们运行哪个程序,但这也许更准确。
我想在嵌入式系统中使用这些信息,这样我就可以选择一个恰好满足这些功能的 CPU。这样我就不必花很多钱购买一个超大的系统。
以下是 stat 文件的内容(截至 2.6.30-rc7):
字段内容 pid 进程号 可执行文件的 tcomm 文件名 state 状态(R 正在运行,S 正在休眠,D 正在休眠) 不间断等待,Z 是僵尸,T 被跟踪或停止) 父进程的 ppid 进程 ID pgrp 进程的 pgrp sid 会话 ID tty_nr 进程使用的 tty tty_pgrp tty 的 pgrp 标志 任务标志 min_flt 小故障数 cmin_flt 孩子的小错误数量 maj_flt 主要故障数量 cmaj_flt 孩子的主要故障数量 utime 用户模式 jiffies stime 内核模式 jiffies 可爱的用户模式 jiffies 与孩子的 cstime 内核模式 jiffies 与子进程 优先级 优先级 不错不错的水平 num_threads 线程数 it_real_value(已过时,始终为 0) start_time 系统启动后进程启动的时间 vsize 虚拟内存大小 rss驻留集内存大小 rsslim RSS 的当前限制(以字节为单位) start_code 地址之上的程序文本可以运行 end_code 程序文本可以运行的地址 start_stack 堆栈的起始地址 esp ESP 的当前值 eip EIP当前值 待处理信号的待处理位图 阻塞信号的阻塞位图 被忽略信号的符号位图 sigcatch 捕获信号的位图 进程休眠的 wchan 地址 0(占位符) 0(占位符) exit_signal 退出时发送给父线程的信号 task_cpu 任务调度在哪个CPU上 rt_priority 实时优先级 策略调度策略(man sched_setscheduler) blkio_ticks 等待块IO所花费的时间 gtime 任务的来宾时间(以 jiffies 为单位) jiffies 中任务子级的 cgtime 来宾时间
答案1
jiffy 不直接取决于 CPU 速度。它是一个时间段,用于对内核中不同的时间间隔进行计数。 jiffy 的长度是在内核编译时选择的。有关此的更多信息:男人7次
jiffies 的基本用途之一是进程调度。一瞬间是调度程序允许进程运行的一段时间,而不会尝试重新调度和交换该进程以让另一个进程运行。
对于速度较慢的处理器,每秒 100 jiffies 就可以了。但现代处理器的内核通常配置为每秒更多的 jiffies。