普通的x86 CPU有两种不同的模式(这里我们可以再细分为保护环)。一种是用户模式,另一种是内核模式。
内核模式可以完全访问硬件。基本上你应该小心地在这里执行一些事情。
出于安全原因,您可以为正常应用程序(如web服务器)选择用户模式。
例如,要调用内核函数,必须进行昂贵的上下文切换。
现在来问我的问题:除了在内核模式下运行一个正常的应用程序是不负责任的事实之外,理论上可以在内核模式下运行一个应用程序,比如一个简单的HTTP服务器。
然而,系统必须是完美的: HTTP服务器是无缺陷的.这在实践中基本上是不可能的。此外,CPU可能有一个安全漏洞,这使得这更加悲惨。
现在我们假设系统将是100%完美的,我们将在内核模式下运行一个应用程序。这种性能差异明显吗?
有没有人尝试过并发表过基准测试?
发布于 2022-11-06 22:34:54
是的,Linux已经有了一段时间的TUX web服务器。几年前,当CPU速度较慢,安全威胁较轻时,它可能有一些生产用途。仅用于服务静态内容。来自维基百科,浓缩:
TUX web服务器是在(GPL)许可下授权的Linux内核中未维护的web服务器。它由Ingo Molnár维持。 ..。 TUX与其他网络服务器的主要区别包括:
tux(2)系统调用)运行。据推测,守护进程可以是一个“内核线程”,而不是用户空间,这是一个可调度的任务,在环0中运行。
kHTTPd我也这么想吗?它说,它可以将非静态内容的请求传递给像Apache这样的完整的web服务器。该站点有一些基准,比如来自K6-2的350 The的请求,显示每秒的请求与并发请求,Apache的峰值是大约500个请求/秒(对于一个100 with与apachebench连接的1K文件)。宙斯管理着大约1900年雷克/秒,但kHTTPd最多只能处理2300雷克/秒,并发性不是很大。
我相信你可以谷歌其他基准的Tux / kHTTPd,既然你知道要搜索什么。
由于有了多核CPU,现代系统甚至可以使10 10Gbit网络链路与运行在用户空间中的正常服务器更加接近饱和。因此,这一想法大多被抛弃,转而使用网络服务。
对于本地文件共享,NFSd仍然主要是在内核中完成的.
服务器说,实际上有这样的实现为多个不同的OSes,包括Solaris和HP。
https://stackoverflow.com/questions/74339186
复制相似问题