2014-03-29 73 views
0

大约需要多少个时钟周期才能在Linux上进行简单的非阻塞系统调用?Unix系统调用开销

我期望与OS X有什么不同吗?

我想知道诸如setsockopt这样的调用,它可能被用来提供一个可选提示来提高性能,但它有其自身的固有成本。

+0

请详细解释一下你想要做什么'setsockopt'调用 –

+0

@BasileStarynkevitch说,'SO_SNDLOWAT'。它应该只是设置一个内部变量并返回。 – Potatoswatter

回答

3

这实际上取决于系统调用和硬件。

制作系统调用的开销不是很大! this给出小于1微秒(即,100个处理器时钟周期)。一些系统调用正在使用vdso(7)来减少开销。

但是,对于给定的系统调用,内核正在做一些工作。根据实际涉及的系统调用,这可能需要很长时间。

对于setsockopt(2)它应该取决于您正在设置的选项。一般来说,Linux套接字的实现是相当不错的,并且大部分时间都花在实际网络上(即以太网等)。

+0

实际上,由于其混合内核体系结构,我预计Mac OS X的整理(可敬)是第二次。当然,假设它确实取决于特定系统调用的性质是正确的。 – mfro