系统调用 gettimeofday系统调用耗时 memset调用耗时 编程获取登录用户

2020-03-12 21:34:00
admin
原创 2567
摘要:系统调用 gettimeofday系统调用耗时 memset调用耗时 编程获取登录用户

一、系统调用

1、安装系统调用帮助文档:yum install man-pages

2、POSIX,Portable Operating System Interface of UNIX,定义操作系统提供的标准接口;

3、kprobe内核调试可以对大多数系统调用动态插入探测点,收集所需的调试信息,不影响原来函数执行;


二、gettimeofday系统调用耗时

代码下载:syscallperf.cpp

性能结论:百万次/200毫秒


三、memset调用耗时

1、void bzero(void *s, size_t n),位于strings.h;

2、void *memset(void *s, int c, size_t n),位于string.h;

3、bzero已经废弃,建议使用memset;

4、压测代码:memset_perf.cpp

5、压测方法:./memset_perf sleep_time loop_count block_size

6、性能结论:1000次malloc和free大概73微秒;

7、性能结论:memset初始化4M数据大概1200微秒;


calcMalloc性能数据(./memset_perf  3 10000 `expr 1024 \* 1024 \* 2`):

CLOCKS_PER_SECOND is 1000000.
cost is 730000, average is 0.000073.

CLOCKS_PER_SECOND is 1000000.
cost is 770000, average is 0.000077.

CLOCKS_PER_SECOND is 1000000.
cost is 700000, average is 0.000070.


calcMemset性能数据(./memset_perf  3 10000 `expr 1024 \* 1024 \* 2`):

CLOCKS_PER_SECOND is 1000000.
cost is 39460000, average is 0.001315.

CLOCKS_PER_SECOND is 1000000.
cost is 14910000, average is 0.001491.

CLOCKS_PER_SECOND is 1000000.
cost is 11620000, average is 0.001162.


四、编程获取登录用户

1、代码下载:getuser.cpp

2、通过isatty和ttyname函数获取当前终端名称,然后根据登录用户列表判断是哪个用户;

3、程序使用STDIN_FILENO获取当前终端,所以标准输入被重定向会导致无法获取真实终端名称;

4、方法二是通过isatty和getlogin函数获取登录用户,getlogin定时任务也能调用成功,所以需要使用isatty进行过滤;

发表评论
评论通过审核之后才会显示。