背景
如果某种需求对于性能要求较高,通常会选择在Linux上运行。因此如何榨干Linux的极限在这种场景下是程序设计和实现阶段需要考虑的内容。
问题
为什么需要bypass kernel
分析
操作系统中有两种不同的执行模式:用户态(user mode)以及内核态(kernel mode)。
正常情况下,我们的程序在用户态下执行;如果需要设计系统资源调用之类的,就会切换到内核态,完成之后再切回用户态。
切换到内核态带来的问题是执行时间不确定:系统负载较高或者被阻塞时,同样的任务执行时间会增加,且增加多少还不一定。
因此,bypass kernel的概念就出来了,对于性能要求较高的程序,在设计和实现过程中要尽可能减少切换到内核态。
解决方案
常用的有:
IPC也就是进程间通信:这类方法不会经过内核。
减少系统调用等
欢迎补充。