My first post, although I have written some articles for Tom’s under my real name, Richard Hart. If you have read any of my reviews you will know that I use hIOmon as part of the “benchmark” suite, but the “real world” tasks have to date been focused on write activity. I’ve been looking at read intensive tasks that are relatively easy to replicate. The dynamic nature of the file system makes this task quite challenging, but some preliminary testing has revealed some interesting results and insights into how the file system operates, which I thought I would share.
So what are the challenges?
One of the first read intensive tasks I selected was a demo version of Crysis. After installing it I found something odd. When playing the game straight after it had been installed hIomon was not registering any I/O activity at the Physical Volume level. How could that be? Looking at the hIomon export files it became evident that all the data required to play the game was already in file system cache as a result of the installation processes!
Below is a partial screen shot of (an adulterated) hIOmon export file. In the line outlined in red it can be seen (as an example) that the ShaderCache.pak process generated 1,429 Read IOP’s. The Read System Cache IOP count is 1,428, which is the amount of I/O operations that were successfully performed in system file cache using the fast I/O path rather than the longer I/O request packet path. There was therefore no requirement to request data from the physical volume level.
http://imageshack.us/a/img441/1692/iopreadcount.png
The next catch was read ahead I/O activity, which can be triggered by simply hovering a mouse over a desktop icon, or by the file system deciding to retrieve a chuck of unrequested data based on a small read request, in anticipation of future use.
Finally it is necessary to reboot after the game has been played, because once played Crysis can remain in the file system cache, so playing it again without re-booting can result in virtually all the I/O activity being served via file system cache.
Here are some key metrics when the game is loaded from the physical volume to the logical disk file level.
Volume Level
• 1,802 MiB Read Total Xfer.
• 500,761 Read IOPS
• 443,485 System Cache IOP count
• 421 Cache Miss IOP Count
Physical Volume Level
• 806 MiB Read Total Xfer.
• 56,344 Read IOPS
The Cache Miss IOP count is recording I/O’s that could not be read from cache and had to be re- read from the physical volume.
Once the game is loaded in the file system and replayed the only I/O activity at the physical volume is due to missed system cache events, which results in a grand total of:
• 1.21 MiB Read Total Xfer.
• 12 Read IOPS
So, trying to avoid a number of potential pitfalls I monitored 5 different games with varying percentages of random I/O activity as below:
Crysis
Random I/O Percentage = 49%
Total Percentage of Data Xfered by Random I/O operations = 20%
Batman Arkham City
Random I/O Percentage = 45%
Total Percentage of Data Xfered by Random I/O operations = 17%
F1 2012
Random I/O Percentage = 65%
Total Percentage of Data Xfered by Random I/O operations = 46%
Hard Reset
Random I/O Percentage = 42%
Total Percentage of Data Xfered by Random I/O operations = 17%
Sleeping Dogs
Random I/O Percentage = 68%
Total Percentage of Data Xfered by Random I/O operations = 47%
http://imageshack.us/a/img543/4456/hiomon.png
All of the drives tested are 256 GB. The Crucial M4 does surprisingly well, whilst the Vertex 4 and Neutron GTX do not. I’ll add a post later to explain the Disk I/O Ranger metrics that resulted in some drives scoring better than others.
So what are the challenges?
One of the first read intensive tasks I selected was a demo version of Crysis. After installing it I found something odd. When playing the game straight after it had been installed hIomon was not registering any I/O activity at the Physical Volume level. How could that be? Looking at the hIomon export files it became evident that all the data required to play the game was already in file system cache as a result of the installation processes!
Below is a partial screen shot of (an adulterated) hIOmon export file. In the line outlined in red it can be seen (as an example) that the ShaderCache.pak process generated 1,429 Read IOP’s. The Read System Cache IOP count is 1,428, which is the amount of I/O operations that were successfully performed in system file cache using the fast I/O path rather than the longer I/O request packet path. There was therefore no requirement to request data from the physical volume level.
http://imageshack.us/a/img441/1692/iopreadcount.png
The next catch was read ahead I/O activity, which can be triggered by simply hovering a mouse over a desktop icon, or by the file system deciding to retrieve a chuck of unrequested data based on a small read request, in anticipation of future use.
Finally it is necessary to reboot after the game has been played, because once played Crysis can remain in the file system cache, so playing it again without re-booting can result in virtually all the I/O activity being served via file system cache.
Here are some key metrics when the game is loaded from the physical volume to the logical disk file level.
Volume Level
• 1,802 MiB Read Total Xfer.
• 500,761 Read IOPS
• 443,485 System Cache IOP count
• 421 Cache Miss IOP Count
Physical Volume Level
• 806 MiB Read Total Xfer.
• 56,344 Read IOPS
The Cache Miss IOP count is recording I/O’s that could not be read from cache and had to be re- read from the physical volume.
Once the game is loaded in the file system and replayed the only I/O activity at the physical volume is due to missed system cache events, which results in a grand total of:
• 1.21 MiB Read Total Xfer.
• 12 Read IOPS
So, trying to avoid a number of potential pitfalls I monitored 5 different games with varying percentages of random I/O activity as below:
Crysis
Random I/O Percentage = 49%
Total Percentage of Data Xfered by Random I/O operations = 20%
Batman Arkham City
Random I/O Percentage = 45%
Total Percentage of Data Xfered by Random I/O operations = 17%
F1 2012
Random I/O Percentage = 65%
Total Percentage of Data Xfered by Random I/O operations = 46%
Hard Reset
Random I/O Percentage = 42%
Total Percentage of Data Xfered by Random I/O operations = 17%
Sleeping Dogs
Random I/O Percentage = 68%
Total Percentage of Data Xfered by Random I/O operations = 47%
http://imageshack.us/a/img543/4456/hiomon.png
All of the drives tested are 256 GB. The Crucial M4 does surprisingly well, whilst the Vertex 4 and Neutron GTX do not. I’ll add a post later to explain the Disk I/O Ranger metrics that resulted in some drives scoring better than others.