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

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

前文

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

测试过程

通过两段程序进行对比,第一段是进行了系统调用获取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利用率是提高了,但是实际上来说中断的工作以及处理恢复工作其实都是非常耗时的,系统调用慢的缘由便是如此!

目录
相关文章
|
Kubernetes 安全 API
Cilium 系列 -3-Cilium 的基本组件和重要概念
Cilium 系列 -3-Cilium 的基本组件和重要概念
|
存储 消息中间件 缓存
键值(key-value)数据库
【4月更文挑战第9天】键值数据库(NoSQL)以键值对形式存储数据,简单灵活,适合任意类型数据。其特点是高性能、高可扩展性,常见应用包括缓存、会话管理、分布式锁、计数统计、配置管理和轻量级消息队列。然而,它不适用于结构化信息存储和复杂查询,选择时需考虑应用场景。
2063 5
|
存储 监控 Linux
【Linux IO多路复用 】 Linux下select函数全解析:驾驭I-O复用的高效之道
【Linux IO多路复用 】 Linux下select函数全解析:驾驭I-O复用的高效之道
2516 0
|
Linux 开发者 云计算
linux内核符号表kallsyms简介
在使用perf排查问题时,我们经常会发现[kernel.kallsyms]这个模块。这到底是个什么东西呢?
19940 0
|
6月前
|
设计模式 SQL 安全
并发设计模式实战系列(13):双重检查锁定(Double-Checked Locking)
🌟 大家好,我是摘星!🌟今天为大家带来的是并发设计模式实战系列,第十三章,废话不多说直接开始~
365 0
|
11月前
|
数据采集 数据挖掘 数据安全/隐私保护
4步教你用rvest抓取网页并保存为CSV文件
本文介绍如何使用R语言的`rvest`包抓取网页数据并保存为CSV文件,以界面新闻网站为例。通过设置代理IP(如亿牛云)、User-Agent和Cookie,增强访问稳定性和安全性。代码涵盖环境配置、数据抓取、解析及保存步骤,确保高效、稳定地获取网页数据。适用于数据分析和统计分析场景。
260 8
4步教你用rvest抓取网页并保存为CSV文件
|
安全 调度
什么是用户态和内核态?
【10月更文挑战第29天】用户态和内核态是操作系统中两个不同的运行级别和权限状态,它们相互配合,共同构成了操作系统的运行基础,为计算机系统的稳定运行和应用程序的高效执行提供了保障。
1345 31
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
1381 3
|
存储 缓存 网络协议
深入理解Linux网络——TCP连接的开销
在应用程序里,我们使用多少内存都是自己能掌握和控制的,但是纵观Linux整台服务器,除了应用程序以外,内核也会申请和管理大量的内存。 一、相关实际问题 内核是如何管理内存的
|
存储 人工智能 分布式计算
云计算的基本概念
云计算的基本概念
6328 0