成都创新互联网站制作重庆分公司

linux毫秒命令 linux 毫秒

linux中shell如何实现毫秒级别的sleep?

有两种方法:

创新互联建站是一家以网络技术公司,为中小企业提供网站维护、成都网站设计、成都做网站、网站备案、服务器租用、域名注册、软件开发、微信小程序开发等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站欢迎咨询:028-86922220

假设目标为 10ms:

方法1. sleep 0.01

方法2.usleep 10000 (usleep为十的负六次方秒,详细见man usleep)

Linux 里面iostat命令作用是什么?

iostat 可以提供更丰富的IO性能状态数据

iostat提供几个用于定制输出的开关。最有用的有:

-c 只显示CPU行

-d 显示设备(磁盘)使用状态

-k 以千字节为单位显示磁盘输出

-t 在输出中包括时间戳

-x 在输出中包括扩展的磁盘指标

rrqm/s: 每秒进行 merge 的读操作数目。

wrqm/s: 每秒进行 merge 的写操作数目。

r/s: 每秒完成的读 I/O 设备次数。

w/s: 每秒完成的写 I/O 设备次数。

rsec/s: 每秒读扇区数。

wsec/s: 每秒写扇区数。

rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)

wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)

avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。

avgqu-sz: 平均I/O队列长度。

await: 平均每次设备I/O操作的等待时间 (毫秒)。

svctm: 平均每次设备I/O操作的服务时间 (毫秒)。

%util: 一秒中有百分之多少的时间用于 I/O 操作。

关于Merge的解释:当系统调用需要读取数据的时 候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge

await:每一个IO请求的处理的平均时间(单位是毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。

%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该 设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因 为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

linux下,记录响应时间的脚本,精确到毫秒ms

gettimeofday(取得目前的时间)

相关函数

time,ctime,ftime,settimeofday

表头文件

#include sys/time.h

#include unistd.h

定义函数

int gettimeofday ( struct timeval * tv , struct timezone * tz )

函数说明

gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。

timeval结构定义为:

struct timeval{

long tv_sec; /*秒*/

long tv_usec; /*微秒*/

};

timezone 结构定义为:

struct timezone{

int tz_minuteswest; /*和Greenwich 时间差了多少分钟*/

int tz_dsttime; /*日光节约时间的状态*/

};

上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime 所代表的状态如下

DST_NONE /*不使用*/

DST_USA /*美国*/

DST_AUST /*澳洲*/

DST_WET /*西欧*/

DST_MET /*中欧*/

DST_EET /*东欧*/

DST_CAN /*加拿大*/

DST_GB /*大不列颠*/

DST_RUM /*罗马尼亚*/

DST_TUR /*土耳其*/

DST_AUSTALT /*澳洲(1986年以后)*/

返回值

成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。

范例

#includesys/time.h

#includeunistd.h

main(){

struct timeval tv;

struct timezone tz;

gettimeofday (tv , tz);

printf(“tv_sec; %d\n”, tv,.tv_sec) ;

printf(“tv_usec; %d\n”,tv.tv_usec);

printf(“tz_minuteswest; %d\n”, tz.tz_minuteswest);

printf(“tz_dsttime, %d\n”,tz.tz_dsttime);

}

执行

tv_sec: 974857339

tv_usec:136996

tz_minuteswest:-540

tz_dsttime:0

linuxsleep函数不准

linuxsleep函数不准解决办法如下:

如下面的一段程序:

应用程序:

#include syswait.h

usleep(n) //n微秒

Sleep(n)//n毫秒

sleep(n)//n秒

驱动程序:

#include linux/delay.h

mdelay(n) //milliseconds 其实现

#ifdef notdef

#define mdelay(n) (\

{unsigned long msec=(n); while (msec--) udelay(1000);})

#else,linuxsleep函数不准就可以调整为正确的了。


当前题目:linux毫秒命令 linux 毫秒
当前网址:http://cxhlcq.com/article/dogspgc.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部