发条闹钟 ? 80后的小时候还没有电子表,家里能有的就是发条闹钟,上紧发条以后闹钟就开始“滴答”,每“滴答”一下就是人类的1秒。 我们把时间分成一天4小时,每天秒,无论我们是忙还是闲我们都在一声声“滴答”中度过和成长,直到电子表和后来的手机盛行,我已经很多年没有听到这么清晰的“滴答”声。 计算机的计时器计算机里也有一个类似的“发条闹钟”,起初每一个“滴答”是1/秒,后来是1/50秒,现在的系统普遍是1/0秒。我们可以简单的理解为,一个滴答的时间越短暂,计算机对CPU效能利用的越紧凑。 #getconfCLK_TCK CLK_TCK是用户进程时钟代表1/秒。这1/秒可以被称为一个“滴答”,你可以认为计算机里面有一块“发条闹钟”(不止一块),时间以1/秒的“滴答”飞逝。 进程滴答一个进程诞生的时候它的“滴答”计数是正整数0,随着程序的运行,时间的迁移,在进程的信息里会累积“滴答”的数量,每一个“滴答”都代表着CPU提供给当前进程1/秒的时间,所以一个进程当前的“滴答”计数是多少,就表达了它消耗了多少的CPU。 在术语中我们管“滴答”叫Tick,“滴答”的总数称作“jiffies”。 占用与空闲一个人每天有4小时,我们以1秒的“滴答”来计算时间,我们大概有8个小时在工作,1个小时在进餐,8个小时在休息,剩下的碎片时间在看手机或者简短的休息。 ? 程序也是一样的,一个程序的运行最小的时间单位是1/秒,一个用时秒完成工作的程序,在微观的世界里,就如同人一样,也是走走停停,有时候忙碌(被占用),有时候空闲,忙碌的时候CPU被占用,每次被占用的时间是1/秒,空闲的时候并没有消耗CPU。 只不过我们大多数时候只关心了结果,只看到了程序运行的总时间,也就是那个秒钟,严格意义上来说,执行了秒,并不能等同于程序占用CPU就高,要看空闲率(空闲与总时长的比值),空闲率越低,CPU的消耗就越多,空闲率越大CPU的消耗就越少。 获取进程滴答我们无法通过PHP的标准函数获取当前进程的滴答数(ticks),但是我们可以通过linux系统下的/proc/{$pid}/stat文件获取到当前进程的信息,在这个信息里保存了四个数字,我们把这四个数字加到一起就是当前进程的滴答数。 functionstat_get_usage(){$pid=getmypid();$path=/proc/.$pid./stat;$info=file_get_contents($path);$stat=array();sscanf($info,%d%s%c%d%d%d%d%d%u%u%u%u%u%u%u%d%d%d%d%d0%u%u%d%u%u%u%u%u%u%u%u%u%u%u%u%u%d%d%u%u%u%u%d\n,$stat[pid],$stat[t得了白癜风在北京哪家医院能治好白癜风有效的治疗方法
|