Summary
In this chapter, we resumed our performance analysis and extended it to the higher layers in the I/O stack. Most of the time, analyzing higher layers is skipped, and focus is solely kept on the physical layer. However, for time-sensitive applications, we need to broaden our approach and look for the potential source of delays in application response times.
We started this chapter by explaining the different sources of delays that can be observed by an application when reading from or writing to a filesystem. Filesystems operations go beyond the I/O requests initiated by an application. In addition to application I/O requests, a filesystem can spend time on tasks such as performing metadata updates, journaling, or flushing existing cached data to disks. All these result in extra operations, which incur extra I/O operations. The tools discussed in Chapter 9 were centered around disks and didn’t offer much visibility into the events happening in the VFS and the block...