用户态切换内核态的开销测试

简介: 用户态切换内核态的开销测试

前文

纸上得来终觉浅,希望通过直观的代码测试出来内核切换的开销

测试过程

通过两段程序进行对比,第一段是进行了系统调用获取uid,第二段是直接返回一个uid的值

gcc callsystem.c -o callsystem
gcc calluser.c -o calluser

测试结果

我们可以看到带有系统调用耗时需要11秒左右,用户态的耗时0.15s,开销上的差异非常明显

系统调用的代码

#include<unistd.h>
#define MAX 50000000
int main(){
        int ii;
        for(ii = 0;ii < MAX; ii++) getuid();
        return 0;
}

非系统调用的代码

#include<unistd.h>
#define MAX 50000000
int _getuid(){
        return 1001;
}
int main(){
        int ii;
        for(ii = 0;ii < MAX; ii++) _getuid();
        return 0;
}

strace 跟踪系统调用

其实getuid不管系统还是用户,都是返回数字就是,测试下来可以看出差异那么大

我们使用strace跟踪一下调用

strace -c ./callsystem

下面这个uid其实已经跑不出来了,基本也就是在系统调用的时候耗时

系统调用慢的缘由

系统调用其实就是应用程序和内核空间的一票接口,因为服务是在内核中提供的,所以不能直接调用调用流程如下:

实际上,系统调用的过程首先需要把用户态切换成内核态,系统调用过程是通过软中断0x80实现的,这个是比较核心的因素,因为一旦是涉及到其他中断就需要经历和其他中断一样的过程,当年这块可是考试重点:

关键的结论其实就是,宏观上来说CPU利用率是提高了,但是实际上来说中断的工作以及处理恢复工作其实都是非常耗时的,系统调用慢的缘由便是如此!

目录
相关文章
|
机器学习/深度学习 人工智能 算法
【AAAI 2024】再创佳绩!阿里云人工智能平台PAI多篇论文入选
阿里云人工智能平台PAI发表的多篇论文在AAAI-2024上正式亮相发表。AAAI是由国际人工智能促进协会主办的年会,是人工智能领域中历史最悠久、涵盖内容最广泛的国际顶级学术会议之一,也是中国计算机学会(CCF)推荐的A类国际学术会议。论文成果是阿里云与浙江大学、华南理工大学联合培养项目等共同研发,深耕以通用人工智能(AGI)为目标的一系列基础科学与工程问题,包括多模态理解模型、小样本类增量学习、深度表格学习和文档版面此次入选意味着阿里云人工智能平台PAI自研的深度学习算法达到了全球业界先进水平,获得了国际学者的认可,展现了阿里云人工智能技术创新在国际上的竞争力。
|
存储 弹性计算 安全
Nginx系列教程(10) - 如何把项目部署到外网?
Nginx系列教程(10) - 如何把项目部署到外网?
1027 0
|
12月前
|
设计模式 SQL 安全
并发设计模式实战系列(13):双重检查锁定(Double-Checked Locking)
🌟 大家好,我是摘星!🌟今天为大家带来的是并发设计模式实战系列,第十三章,废话不多说直接开始~
663 0
|
6月前
|
存储 人工智能 并行计算
阿里云技术加持!钉钉AI表格突破1000万热行
钉钉AI表格突破单表1000万热行,首创存算一体架构,助力企业高效应对双11数据洪峰。已应用于德香苑、森马等品牌,实现海量数据秒级响应,告别“人工分表”,提升运营效率与决策精准度。
391 0
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
75680 5
详解HTTP四种请求:POST、GET、DELETE、PUT
|
安全 调度
什么是用户态和内核态?
【10月更文挑战第29天】用户态和内核态是操作系统中两个不同的运行级别和权限状态,它们相互配合,共同构成了操作系统的运行基础,为计算机系统的稳定运行和应用程序的高效执行提供了保障。
1903 31
|
存储 缓存 网络协议
深入理解Linux网络——TCP连接的开销
在应用程序里,我们使用多少内存都是自己能掌握和控制的,但是纵观Linux整台服务器,除了应用程序以外,内核也会申请和管理大量的内存。 一、相关实际问题 内核是如何管理内存的
|
数据采集 存储 算法
数据挖掘1——课后习题
数据挖掘1——课后习题
726 0
|
缓存 负载均衡 算法
HTTPS对性能的一些影响
HTTPS对性能的一些影响
1021 9
|
存储 人工智能 分布式计算
云计算的基本概念
云计算的基本概念
7695 0