我找不到任何关于kflushd的文档,比如它到底做了什么,它是如何参与网络IO的,以及我如何在自己的代码中使用/调用它。
发布于 2012-02-06 07:25:39
kflushd AFAIK处理将内存中的挂起I/O写到相应的设备。如果您想刷新挂起的I/O,您可以随时调用flush、fflush或sync来强制写入I/O设备。
要从您的代码中调用它,只需使用我提到的调用之一(尽管我认为可能还有一个我忘记了)。
发布于 2012-02-06 13:55:03
像kflushd这样的内核进程是由内核自己启动的(它们不是由fork-ing启动的初始化进程的后代),并且只为内核需要而存在。用户应用程序可能看不见地需要它们(因为它们需要内核提供的一些功能,这些功能是内核在自己的内核进程的帮助下实现的),但不会主动使用它们。
您绝对应该适当地使用fflush(3)库函数(它恰好会执行相关的write(2)系统调用)。
您可能想要使用fsync(2)和相关的系统调用。
关于网络,你可能会对Nagle's algorithm感兴趣。参见this answer。
https://stackoverflow.com/questions/9154042
复制相似问题