首页 » SEO优化 » php除以10000技巧_运用linux time敕令测量轨范运行时间内存IO等

php除以10000技巧_运用linux time敕令测量轨范运行时间内存IO等

访客 2024-11-29 0

扫一扫用手机浏览

文章目录 [+]

time的命令,用于丈量命令的运行韶光,还可以丈量内存、I/O等的利用情形。

1 linux系统默认有两个time命令

1 一个是 bash 的内置命令,比较大略2 一个是/usr/bin/time外部命令。

php除以10000技巧_运用linux time敕令测量轨范运行时间内存IO等 php除以10000技巧_运用linux time敕令测量轨范运行时间内存IO等 SEO优化

root@SD-20200928IIIF:~# type -a timetime is a shell keywordtime is /usr/bin/time2 内置的time命令

查看脚本运行韶光:

php除以10000技巧_运用linux time敕令测量轨范运行时间内存IO等 php除以10000技巧_运用linux time敕令测量轨范运行时间内存IO等 SEO优化
(图片来自网络侵删)

root@SD-20200928IIIF:~# time php demo.php 10000real 0m0.122suser 0m0.016ssys 0m0.109s

查看shell运行韶光:

root@SD-20200928IIIF:~# time find /etc/php/ -name "php.ini"/etc/php/7.2/apache2/php.ini/etc/php/7.2/cli/php.inireal 0m0.016suser 0m0.000ssys 0m0.016s

输出结果统计了三个韶光:

real:从进程开始实行到完成所耗费的 CPU 总韶光。
该韶光包括进程实行时实际利用的 CPU 韶光,进程耗费在壅塞上的韶光(准期待完成 I/O 操作)和其他进程所耗费的韶光(Linux 是多进程系统,ls 在实行过程中,可能会有别的进程抢占 CPU)。

user:进程 实行用户态代码所耗费的 CPU 韶光。
该韶光仅指进程实行时实际利用的 CPU 韶光,而不包括其他进程所利用的韶光和本进程壅塞的韶光。

sys:进程在内核态运行所耗费的 CPU 韶光,即实行内核系统调用所耗费的 CPU 韶光。

真正实行韶光是多少?答案便是 user+sys 的韶光,但一样平常情形下,real=user+sys,因而我们就利用 real 的韶光作为程序的实行韶光了。

2.1 real的几个坑

误区一:real_time=user_time+sys_time

real time 是包含了其他进程的实行韶光和进程壅塞韶光的,而 usr time+sys time 显然是不包括其他进程的实行韶光和进程壅塞韶光的。
因此,real_time>user_time+sys_time 是非常有可能的。

误区二:real_time>user_time+sys_time

一样平常来说,在单核 CPU 系统中,这个关系式是成立的,但如果我们的系统是多核 CPU 的话,而有些程序是能够同时利用到多核 CPU 的打算能力的,在这种情形下这个关系式就不成立了。

程序利用多核 CPU 的打算能力,可以并行地处理多项事务。
就像一件事情,原来是一个 CPU 核去做,现在是两个 CPU 核并行做,那么完成同样事情所花费的总韶光是 user_time+sys_time,而两个人并行做却能够在更短的韶光内完成,耗时为 real_time。
因此,这种情形下,便涌现了 real_time<user_time+sys_time 的情形。

误区三:real_time<user_time+sys_time

多核情形下,real_time<user_time+sys_time 是成立的,那单核呢?显然是 real_time>user_time+sys_time。

上面的三个误区有点绕,但结论很主要,便是 real_time 和 user_time+sys_time 的大小关系不是历久不变的,你须要理解你的 Linux 做事器,是单核,还是多核,这样才能精确地确定它们的关系。

2.2 系统缓存

root@SD-20200928IIIF:~# time find /mnt/d/php_worker/php-command/ -name "php" > /dev/null real 0m0.025suser 0m0.000ssys 0m0.031sroot@SD-20200928IIIF:~# time find /mnt/d/php_worker/php-command/ -name "php" > /dev/null real 0m0.021suser 0m0.016ssys 0m0.000s

为什么同样的命令在第二次实行时快这么多呢?

这个征象跟 Linux 操作系统的运行事理有关,find 命令在第一次实行后,系统会对一些文件做缓存,在第二次实行时,就恰好利用到了这些缓存中的数据,因此实行速率就变快了很多。

3 /usr/bin/time 命令

它不仅可以丈量运行韶光,还可以丈量内存、I/O 等的利用情形

这里还用php这个脚本举例

# shell内置time命令root@SD-20200928IIIF:~# time php demo.php 10000real 0m0.095suser 0m0.031ssys 0m0.063s# /usr/bin/time 命令root@SD-20200928IIIF:~# /usr/bin/time php demo.php 100000.04user 0.07system 0:00.11elapsed 107%CPU (0avgtext+0avgdata 16476maxresident)k0inputs+0outputs (0major+4801minor)pagefaults 0swaps# /usr/bin/time 命令也可以利用 \timeroot@SD-20200928IIIF:~# \time php demo.php 100000.03user 0.06system 0:00.09elapsed 96%CPU (0avgtext+0avgdata 16476maxresident)k0inputs+0outputs (0major+4801minor)pagefaults 0swaps

/usr/bin/time 命令输出内容中的末了两行,打印了很多指标数据,但彷佛有点晦涩难懂。
这时我们可以利用一个 -v 选项,这样可以打印出更详细的格式化后的信息。

root@SD-20200928IIIF:~# \time -v php demo.php 10000 Command being timed: "php demo.php" User time (seconds): 0.00 System time (seconds): 0.10 Percent of CPU this job got: 93% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.11 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 16476 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 4802 Voluntary context switches: 0 Involuntary context switches: 0 Swaps: 0 File system inputs: 0 File system outputs: 0 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0

在 \time 命令的输出中,Elapsed time 是通过系统调用 gettimeofday 获取到的结束韶光和起始韶光相减得到的。
因此,time 对付运行韶光较短的任务计时时,会产生一定偏差。
time 命令输出的韶光统计精度基本在 10 毫秒级。

3.1 time 命令输出指标先容

time 命令可以显示的资源共有三大项,分别是:韶光、内存和 I/O。
下面来详细看看 time 命令都显示了哪些指标数据。

(1) 韶光

指 标

含 义

Elapsed (wall clock) time

实行命令所花费的韶光,格式是:[hour]:minute:second

System time

命令实行时在内核模式所花费的韶光,单位是秒

User time

命令实行时在利用者模式所花费的韶光,单位是秒

Percent of CPU this job got

命令实行时 CPU 的占用比例。
实在这个数字便是内核模式的 CPU 韶光加上利用者模式的 CPU 韶光除以总韶光

(2) 内存

指 标

含 义

Maximum resident set size

实行程序所占用内存的最大值。
单位是 KB

Average resident set size

实行程序所占用内存的均匀值,单位是 KB

Average total size

实行程序所占用的内存总量(stack+data+text)的均匀大小, 单位是 KB

Average unshared data size

实行程序所占用的私有数据区(unshared data area)的均匀 大小,单位是 KB

Average stack size

实行程序所占用的私有堆栈(unshared stack)的均匀大小, 单位是 KB

Average shared text size

实行程序间共享内容(shared text)的均匀值,单位是 KB

Page size

系统内存页的大小,单位是 byte。
对付同一个别系来说,这 是个常数

(3) I/O

指 标

含 义

Major (requiring I/O) page faults

此程序的紧张内存页缺点发生的次数。
所谓的紧张内存页缺点是指某一内存页己经詈换到 SWAP 分区中,又被其他程序利用过,该页的内容必须从 SWAP 分区里再读出来才能利用

Minor (reclaiming a frame) page faults

此程序的次要内存页缺点发生的次数。
所谓的次要内存页缺点是指某一内存页虽然己经詈换到 SWAP 中,但尚未被其他程序利用。
此时该页的内容并未 被毁坏,不必从 SWAP 分区里读出来即可直策应用

Swaps

此程序被交流到 SWAP 分区的次数

Involuntary context switches

此程序被强制中断(如 CPU 韶光耗尽)的次数

Voluntary context switches

此程序志愿中断(I/O 实行完毕,磁碟读取完成等)的次数

File system inputs

此程序所输入的文件数

File system outputs

此程序所输出的文件数

Socket messages received

此程序所收到的 Socket Message

Socket messages sent

此程序所送出的 Socket Message

Signals delivered

此程序所收到的旗子暗记数

Exit status

命令退出状态

本文整理参考

http://c.biancheng.net/linux/time.html

标签:

相关文章

创意无限,网站设计引领未来潮流

随着互联网的不断发展,网站设计已经成为企业展示形象、宣传产品的重要渠道。在这个信息爆炸的时代,如何打造一个独具创意、令人过目难忘的...

SEO优化 2024-12-05 阅读0 评论0

PHP求单技巧_PHP之单例模式

概述:担保一个类仅有一个实例,并供应一个访问它的全局访问点利用条件:1 布局函数须要标记为private(访问掌握:防止外部代码利...

SEO优化 2024-12-05 阅读0 评论0

获取php文件技巧_PHP获取目录下文件

1、获取目录下文件,不包括子目录//获取某目录下所有文件、目录名(不包括子目录下文件、目录名) $handler = opendi...

SEO优化 2024-12-05 阅读0 评论0