- 浏览: 7983534 次
- 性别:
- 来自: 广州
-
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
今天发现linux中还有两个time指令,小结下:
在linux中存在两个time,一个是bash的命令,另外一个是程序/usr/bin/time,bash的time命令只能很简单的显示程序执行的时间,而/usr/bin/time程序可以显示很详细的与IO相关的数据,比如从内存中读取了多少数据,从磁盘中读取了多少数据之类的,以及文件系统的页大小。
通过type命令我们可以看到Linux中的两个time
oracle@linux[]:~
$type -a time
time is a shell keyword
time is /usr/bin/time
bash中的time示例
oracle@linux[]:~
$time echo test
test
real 0m0.000s
user 0m0.000s
sys 0m0.000s
bash中的time命令只能显示你程序的执行时间,包括实际执行时间,用户时间和系统时间,除此之外没有其他的信息。
而time程序就不一样了,它可以提供很详尽的信息,而且还能够定制time程序的输出结果,具体的可以通过man time查看,这里仅仅列举下time -v参数下的数据显示。
oracle@linux[]:~
$/usr/bin/time -v echo test
test
Command being timed: "echo test"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
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): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 113
Minor (reclaiming a frame) page faults: 16
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
从上面的输出结果我们可以看到,除了CPU时间之外,通常我们还关心下面几个:
Major (requiring I/O) page faults
从磁盘中读取了多少页的数据。
Minor (reclaiming a frame) page faults
从操作系统缓存中读取了多少页的数据。
Swaps
进程被swap出内存的次数。
File system inputs/outputs
从文件系统中读取/写入的数据数量。
Page size (bytes)
操作系统的页大小。
--------------------------------------
关于time中的三态的补充讲解:
核心态(Kernel Mode):
在内核态,代码拥有完全的,不受任何限制的访问底层硬件的能力。可以执行任意的CPU指令,访问任意的内存地址。内核态通常情况下,都是为那些最底层的,由操作系统提供的,可信可靠的代码来运行的。内核态的代码崩溃将是灾难性的,它会影响到整个系统。
用户态(User Mode):
在用户态,代码不具备直接访问硬件或者访问内存的能力,而必须借助操作系统提供的可靠的,底层的APIs来访问硬件或者内存。由于这种隔离带来的保护作用,用户态的代码崩溃(Crash),系统是可以恢复的。我们大多数的代码都是运行在用户态的。
我们来看看这三个的关系,这三者之间没有严格的关系,常见的误区有:
误区一: real_time = user_time + sys_time
我们错误的理解为,real time 就等于 user time + sys time,这是不对的,real time是时钟走过的时间,user time 是程序在用户态的cpu时间,sys time 为程序在核心态的cpu时间。
利用这三者,我们可以计算程序运行期间的cpu利用率如下:
%cpu_usage = (user_time + sys_time)/real_time * 100%
如:
# time sleep 2
real 0m2.003s
user 0m0.000s
sys 0m0.000s
cpu利用率为0,因为本身就是这样的,sleep 了2秒,时钟走过了2秒,但是cpu时间都为0,所以利用率为0
误区二:real_time > user_time + sys_time
一般来说,上面是成立的,上面的情况在单cpu的情况下,往往都是对的。
但是在多核cpu情况下,而且代码写的确实很漂亮,能把多核cpu都利用起来,那么这时候上面的关系就不成立了,例如可能出现下面的情况,请不要惊奇。
real 1m47.363s
user 2m41.318s
sys 0m4.013s
-----------------------------------------
在linux中存在两个time,一个是bash的命令,另外一个是程序/usr/bin/time,bash的time命令只能很简单的显示程序执行的时间,而/usr/bin/time程序可以显示很详细的与IO相关的数据,比如从内存中读取了多少数据,从磁盘中读取了多少数据之类的,以及文件系统的页大小。
通过type命令我们可以看到Linux中的两个time
oracle@linux[]:~
$type -a time
time is a shell keyword
time is /usr/bin/time
bash中的time示例
oracle@linux[]:~
$time echo test
test
real 0m0.000s
user 0m0.000s
sys 0m0.000s
bash中的time命令只能显示你程序的执行时间,包括实际执行时间,用户时间和系统时间,除此之外没有其他的信息。
而time程序就不一样了,它可以提供很详尽的信息,而且还能够定制time程序的输出结果,具体的可以通过man time查看,这里仅仅列举下time -v参数下的数据显示。
oracle@linux[]:~
$/usr/bin/time -v echo test
test
Command being timed: "echo test"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.01
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): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 113
Minor (reclaiming a frame) page faults: 16
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
从上面的输出结果我们可以看到,除了CPU时间之外,通常我们还关心下面几个:
Major (requiring I/O) page faults
从磁盘中读取了多少页的数据。
Minor (reclaiming a frame) page faults
从操作系统缓存中读取了多少页的数据。
Swaps
进程被swap出内存的次数。
File system inputs/outputs
从文件系统中读取/写入的数据数量。
Page size (bytes)
操作系统的页大小。
--------------------------------------
关于time中的三态的补充讲解:
核心态(Kernel Mode):
在内核态,代码拥有完全的,不受任何限制的访问底层硬件的能力。可以执行任意的CPU指令,访问任意的内存地址。内核态通常情况下,都是为那些最底层的,由操作系统提供的,可信可靠的代码来运行的。内核态的代码崩溃将是灾难性的,它会影响到整个系统。
用户态(User Mode):
在用户态,代码不具备直接访问硬件或者访问内存的能力,而必须借助操作系统提供的可靠的,底层的APIs来访问硬件或者内存。由于这种隔离带来的保护作用,用户态的代码崩溃(Crash),系统是可以恢复的。我们大多数的代码都是运行在用户态的。
我们来看看这三个的关系,这三者之间没有严格的关系,常见的误区有:
误区一: real_time = user_time + sys_time
我们错误的理解为,real time 就等于 user time + sys time,这是不对的,real time是时钟走过的时间,user time 是程序在用户态的cpu时间,sys time 为程序在核心态的cpu时间。
利用这三者,我们可以计算程序运行期间的cpu利用率如下:
%cpu_usage = (user_time + sys_time)/real_time * 100%
如:
# time sleep 2
real 0m2.003s
user 0m0.000s
sys 0m0.000s
cpu利用率为0,因为本身就是这样的,sleep 了2秒,时钟走过了2秒,但是cpu时间都为0,所以利用率为0
误区二:real_time > user_time + sys_time
一般来说,上面是成立的,上面的情况在单cpu的情况下,往往都是对的。
但是在多核cpu情况下,而且代码写的确实很漂亮,能把多核cpu都利用起来,那么这时候上面的关系就不成立了,例如可能出现下面的情况,请不要惊奇。
real 1m47.363s
user 2m41.318s
sys 0m4.013s
-----------------------------------------
发表评论
-
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3132微软提供了不少命令行 ... -
挂载文件系统选项nodiratime、noatime等集合小结
2018-06-02 19:56 2704Linux系统文件有三个主 ... -
Linux如何查看当前占用CPU或内存最多的K个进程
2018-05-20 11:01 3317内存 可以使用以下命令查使用内存最多的K个进程 方法1: p ... -
(转)使用frp实现内网穿透
2018-05-14 13:33 2431https://www.jianshu.com/p/e8e26 ... -
docker小结1
2018-05-11 14:26 5041 通过dockerfile建立一个简单的HELLO.C,然后 ... -
LINUX下EPOLL等不错的文章收藏
2018-04-25 09:35 5911 通俗讲解 异步,非阻塞和 IO 复用 https:/ ... -
Ubuntu中root用户和user用户的相互切换
2018-04-06 12:46 10481)从user用户切换到root用户 不管是用图形模式登录U ... -
ubuntu下Virtualbox虚拟Ubuntu共享文件夹设置
2018-04-06 11:41 10301. 安装增强功能包(Guest Additions) 安装 ... -
Web网站压力及性能测试
2017-10-09 19:59 718https://segmentfault.com/a/1190 ... -
工具推荐:Netdata,Linux性能实时监测工具
2017-07-14 09:10 1194工具推荐:Netdata,Linux性能实时监测工具 http ... -
一个 Linux 下基于 Bash 的文件和数据库监控及备份工具,可发送微信报警通知
2017-07-11 07:07 1669一个 Linux 下基于 Bash 的文件和数据库监控及备份工 ... -
收藏个不错的能发送日志等警告信息等到微信的工具
2017-06-11 10:12 1093发现个将比如报警日志呀之类的提醒信息,发送给微信的好的工具,不 ... -
收藏:nginx教程从入门到精通(ttlsa出品)
2017-02-09 22:53 753http://www.ttlsa.com/nginx/ngin ... -
(转)从dstat理解Linux性能监控体系
2016-08-02 10:27 2597http://calvin1978.blogcn.com/ar ... -
linux下安装SZ,RZ命令
2016-02-26 20:59 1684在 linux 下,一般用secur crt等工具,今天居然 ... -
Clumsy —— 帮你模拟各种网络不稳定的环境,包括掉包
2014-11-14 09:12 1800Clumsy —— 帮你模拟各种网络不稳定的环境,包括掉包、延 ... -
ping+tracerout的unix下网络诊断小工具mtr
2014-07-29 22:04 1617今日才发现,原来linux中可以用ping和tracerout ... -
(转)Apache日志分割
2014-02-25 20:20 1642Apache和Ngix一样,对日志没有进行分割处理,这样很不方 ... -
linux下 cpu频率节能
2014-02-25 13:06 1462参考: http://linux-wiki.cn/wiki/z ... -
(转)最佳日志实践
2014-01-22 23:24 972http://www.bitstech.net/2014/01 ...
相关推荐
该函数接收两个参数,第一个参数`tv`是一个指向`struct timeval`结构体的指针,用于存储秒和微妙级别的当前时间;第二个参数`tz`是一个指向`struct timezone`结构体的指针,用于存储时区信息。 `struct timeval`和`...
这是因为TCP设计者考虑到两个重要的因素: 1. **防止旧连接的重复数据包**:2MSL的时间足以让任何在旧连接中可能丢失并重新路由的包在网络中消失,避免这些旧包对新连接产生影响。 2. **保证TCP连接的可靠关闭**:...
- **struct timespec**:包含秒和纳秒两个字段,提供更高的精度。 - **struct timeval**:与struct timespec类似,但精度稍低,包含秒和微秒。 3. **内核时间API** - **gettimeofday()**:获取当前时间,返回...
- **作用**:计算两个 `time_t` 类型的时间值之间的时间间隔,返回一个 `double` 类型的值,表示时间差(以秒为单位)。 - **示例**: ```c #include <time.h> #include int main() { time_t start_time, end_...
在这个游戏中,我们可以创建两个进程:一个是玩家进程,另一个是计算机进程。玩家进程负责接收用户的输入,而计算机进程则生成随机的石头、剪刀或布选项。 创建进程在Linux中通常通过`fork()`系统调用来完成。`fork...
- **`transport()`**: 负责在两个队列之间传输数据。 - 从第一个队列读取数据。 - 将数据写入第二个队列。 #### 5. 锁与互斥 - **互斥锁**: - `sem_wait(&mutex)`: 获取互斥锁,确保在同一时间只有一个线程能够...
【Linux网络编程笔记】TCP短连接产生大量TIME_WAIT导致无法对外建立新TCP连接的原因及解决方法,这是一个关于网络编程和Linux系统配置的问题。在TCP/IP通信中,TIME_WAIT状态是TCP连接生命周期的一部分,用于确保...
8. **网络协议**:RTSP(Real-Time Streaming Protocol)和ONVIF(Open Network Video Interface Forum)是两个常见的CCTV领域协议,用于设备间的通信和互操作性。 9. **自动化脚本**:Linux的shell脚本可以用于...
守护进程与 Windows 中的后台服务程序比较类似,如 Windows 中有一种 time 系统服务,用来从远程主机获得日期和时间,Linux 中也有类似 的两个守护进程 time 和 time-udp,分别采用 TCP 和 UDP 协议从远程主机获得...
文档最后提供了针对Adeos和ARTiS的性能测量结果,这些数据展示了在Linux操作系统上运行实时和高性能计算任务时,这两个组件的贡献和优势。通过对比不同场景下的执行时间、CPU利用率和任务调度效率,研究者们证明了在...
在 Linux 中,命令运行监测和软件安装是两个非常重要的概念。命令运行监测是指监测当前命令的运行时间和资源使用情况,而软件安装则是指在 Linux 系统中安装新的软件包。 命令运行监测 在 Linux 中,time 命令可以...
在你提供的压缩包"rtlinux-3.2.zip"中,包含了两个重要的子文件,即"rtlinux-3.2-rc1.tar.bz2"和"rtlinux-3.2-pre3.tar.bz2"。这两个文件分别是RTLinux 3.2版本的候选发布1(Release Candidate 1,简称RC1)和预发布...
首先,需要在ZYNQ平台的Linux内核中启用Watchdog支持。这一步骤是通过内核配置菜单完成的。 1. **打开内核配置菜单**:运行`make menuconfig`进入内核配置界面。 2. **选择Watchdog配置**:在内核配置界面中找到并...
在Linux系统中,用户管理和权限控制是至关重要的部分,而这一切的核心都离不开两个文件:`/etc/passwd` 和 `/etc/shadow`。这两个文件对于系统的正常运行至关重要,没有它们,几乎无法进行用户登录或执行与账户相关...
Linux 中 locale 自用总结 locale 是根据计算机用户所使用...locale 和字符集是 Linux 中的两个重要概念,它们都是软件运行时语言环境的组成部分。理解 locale 和字符集对于 Linux 的软件开发和系统管理是非常重要的。
在 Linux 系统中,locale 设置分为两种:系统级别和用户级别。系统级别的 locale 设置影响整个系统,而用户级别的 locale 设置只影响当前用户。用户级别的 locale 设置可以通过在用户的家目录下创建一个名为 .bashrc...
根据提供的文件信息,本文将对Linux按键驱动中的定时器去抖动机制进行深入解析,并结合具体代码示例来探讨其实现细节。 ### Linux按键驱动概述 在Linux内核中,按键驱动程序通常用于处理硬件上的按钮事件。这些...
在Linux系统中,TIME服务通常基于TCP协议实现,这允许两个系统之间可靠地传输时间信息。本文将深入探讨TIME服务的TCP实现,重点关注其在Linux环境下的工作原理、源码分析及其实现过程。 1. **TIME服务概述** TIME...
1. `net.ipv4.tcp_syn_retries` 和 `net.ipv4.tcp_synack_retries`:这两个参数设置SYN连接请求的重试次数,减少等待时间,避免长时间占用连接资源。 2. `net.ipv4.tcp_keepalive_time`:设置TCP保持活动的时间间隔...