linux下usleep函数对CPU占用率的影响

linux下usleep函数对CPU占用率的影响

2023-11-16

文章目录

  • linux下usleep函数对CPU占用率的影响
    • [1. 测试代码](#1. 测试代码)
    • [2. CPU占用率](#2. CPU占用率)
      • 不使用usleep延时
      • [#define SLEEP_US 1 (1微秒)](#define SLEEP_US 1 (1微秒))
      • [#define SLEEP_US 10 (10微秒)](#define SLEEP_US 10 (10微秒))
      • [#define SLEEP_US 100 (100微秒)](#define SLEEP_US 100 (100微秒))
      • [#define SLEEP_US 1000 (1000微秒=1毫秒)](#define SLEEP_US 1000 (1000微秒=1毫秒))
      • [#define SLEEP_US 10000 (10000微秒=10毫秒)](#define SLEEP_US 10000 (10000微秒=10毫秒))
      • [#define SLEEP_US 100000 (100000微秒=100毫秒)](#define SLEEP_US 100000 (100000微秒=100毫秒))

环境

复制代码
系统: ubuntu 22.04
内核版本: Linux 5.15.0-58-generic
cpu: Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz
cpu核数: 1
架构: x86_64

1. 测试代码

main.cpp

复制代码
#include <unistd.h> // usleep

#define SLEEP_US 1

int main()
{
    while (1)
    {
        usleep(SLEEP_US);
    }

    return 0;
}

$ g++ main.cpp -o main
$ ./main
$ top -p `pidof main`

2. CPU占用率

不使用usleep延时

CPU占用率:95.3%

复制代码
$ top -p `pidof main`
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2325638 root      20   0    2640    940    848 R  95.3   0.1   0:29.17 main

#define SLEEP_US 1 (1微秒)

CPU占用率:8.0%

复制代码
$ top -p `pidof main`
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2324270 root      20   0    2640    928    840 R   8.0   0.1   0:07.92 main

#define SLEEP_US 10 (10微秒)

CPU占用率:7.0%

复制代码
$ top -p `pidof main`
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2326872 root      20   0    2640    976    888 R   7.0   0.1   0:01.61 main

#define SLEEP_US 100 (100微秒)

CPU占用率:3.3%

复制代码
$ top -p `pidof main`
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2327593 root      20   0    2640    988    900 R   3.3   0.1   0:00.73 main

#define SLEEP_US 1000 (1000微秒=1毫秒)

CPU占用率:0.7%

复制代码
$ top -p `pidof main`
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2328327 root      20   0    2640    984    896 S   0.7   0.1   0:00.15 main

#define SLEEP_US 10000 (10000微秒=10毫秒)

CPU占用率:0.3%

复制代码
$ top -p `pidof main`
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2329099 root      20   0    2640    988    900 S   0.3   0.1   0:00.02 main

#define SLEEP_US 100000 (100000微秒=100毫秒)

CPU占用率:0.0%

复制代码
$ top -p `pidof main`
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2329719 root      20   0    2640    984    896 S   0.0   0.1   0:00.00 main

License

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎


Reference:

NULL

相关推荐
冰封之寂5 小时前
Docker 资源管理终极指南:CPU、内存与 IO 的精细化控制
linux·运维·服务器·docker·云计算
xiaoye-duck5 小时前
《Linux系统编程》Linux 系统多线程(五):<线程同步与互斥>线程互斥(上):从条件变量到生产者消费者模型详解
linux·线程
一叶龙洲7 小时前
向日葵远程Ubuntu,支持隐私屏
linux·运维·ubuntu
酷可达拉斯8 小时前
Linux操作系统-shell编程之Grep与正则表达式
linux·运维·服务器·正则表达式·centos
寒水馨8 小时前
Linux下载、安装llama.cpp-b10068(附安装包llama-b10068-bin-ubuntu-vulkan-x64.tar.gz)
linux·ubuntu·llm·llama·本地部署·llama.cpp·推理引擎
我星期八休息11 小时前
网络编程—UDP与TCP
linux·运维·网络·数据库·网络协议·tcp/ip·udp
ziguo112211 小时前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
三84412 小时前
使用Samba/NFS实现文件共享/自动挂载共享目录/autofs自动挂载服务
linux·服务器·网络
高铭杰13 小时前
万物皆可KV(2)SurrealDB 存储布局分析
linux·服务器
无小道14 小时前
深入解析操作系统文件缓冲区:页缓存、基数树与f_pos的协同设计
linux·缓存·文件缓冲区