I have a 30GB file on an SSD disk and a process that continuously in a loop reads and writes from/to random locations in the file.
According to IO top, the process consumes almost max read and write IO (40MB/s read, 120MB/s writes, ~95% IO) for ~30 seconds. During those 30 seconds no other process shows any usage of the IO. During that time, while total IO is showing ~120M/s, the actual IO appears to be idle.
Then after 30 seconds kworker appears on top. It shows 0 DISK READ and 0 DISK WRITE, but ~95% IO. It lasts for ~45 seconds, and during those 45 seconds my process also shows ~95% IO, but the read and write speed goes down significantly, to around 2MB/s and 6MBs correspondingly, with high variance. The total IO during this period is close to zero, but the actual IO is now high. After ~45 seconds, kworker disappears, and my process runs at full speed for another 30 seconds.
What is the likely cause of this behavior?
kworkeris "flushing to disk" the data that was in the buffers. – waltinator Aug 05 '20 at 07:14