两个进程操作同一个文件,一个在尾部追加写,一个从头开始读,对磁盘有什么影响呢
資深大佬 : kakaxi9394 6
磁盘头是不是会一会儿 seek 到文件头部,一会儿 seek 到文件尾部?
最近在看 kafka 的存储设计,想到 broker 一般追加新消息到日志文件,一边读日志文件给 consumer 发消息。如果读写进度有很大差别,磁盘 seek 的开销是不是会变大?
即使 linux 内核有 page cache,是不是也会出现这个问题?
大佬有話說 (11)
磁盘头是不是会一会儿 seek 到文件头部,一会儿 seek 到文件尾部?
最近在看 kafka 的存储设计,想到 broker 一般追加新消息到日志文件,一边读日志文件给 consumer 发消息。如果读写进度有很大差别,磁盘 seek 的开销是不是会变大?
即使 linux 内核有 page cache,是不是也会出现这个问题?
我这里就只是好奇,是不是有极端情况: 一个日志文件同时读写,又恰好触发了内核 buffer 和磁盘文件的同步,就会出现“一会儿 seek 到文件头部,一会儿 seek 到文件尾部”的情况。
感觉是有可能的。我自己钻牛角尖罢了,纯粹好奇
刚写入的文件内容就在 cache 里,不需要读。硬要做成 write trough cache 的话,可能会来回 seek,但不会非常频繁。硬要禁用 cache 和调度器的话才会来回 seek (但是硬盘本身还有 buffer )