Hi, I did the change which also forced me to switch to windowsaio as the ioengine. Now the read/write ratio is aligned with what is expected (70/30) but the performance is about 1/5 of what it was. Based on your email, I understand that it was using Windows Volume Cache but I don't get why the performance as seen from the storage unit was 5x higher then it is now. If I would have had hit cache at the Windows level, it seems to me that it would not have get a higher throughput as seen from the storage unit (not the server). It should have reduce the number of IO going to the storage, no? Also, I'm using multiple 20GB files per host (16x) and the hosts only have 4GB of RAM so... that doesn't make a large cache as I understand it. Right now, I can see that changing direct=0 by direct=1 and the ioengine to windowsaio is slowing down the performance while, at the same time, fix the ratio read/write so the Windows Volume Cache is certainly doing something but I would not expect it to increase the performance and certainly not when looking at it from the storage unit. I'm also monitoring the throughput on the network and it was 5x higher before then now which contribute to my understanding that there was not much hit rate at the Windows Volume Cache level. Any idea of why I'm seeing those results? Thank you. Etienne -----Message d'origine----- De : Elliott, Robert (Servers) <elliott@xxxxxxx> Envoyé : May 23, 2019 1:42 PM À : Etienne-Hugues Fortin <efortin@xxxxxxxxxxxxxxxx>; fio@xxxxxxxxxxxxxxx Objet : RE: Either I don't understand how it work or I get unexpected result - mixed workload > -----Original Message----- > From: fio-owner@xxxxxxxxxxxxxxx [mailto:fio-owner@xxxxxxxxxxxxxxx] On > Behalf Of Etienne-Hugues Fortin > Sent: Thursday, May 23, 2019 6:57 AM > To: fio@xxxxxxxxxxxxxxx > Subject: Either I don't understand how it work or I get unexpected > result - mixed workload > > Hi, > > I'm trying to create a workload where 70% would be read, 30% write > with a ratio of 50% random for the whole workload. Currently, the job look like this: > > [global] > directory=\\server\path > rw=randrw > rwmixread=70 > percentage_random=50 > numjobs=16 > size=20g > bs=32k > zero_buffers > direct=0 > sync=0 > refill_buffers > ioengine=sync > iodepth=1 > runtime=900 > time_based > [32k_IOPS] > > My understanding is that randrw will do random read/write, rwmixread > will set the read percentage to 70% and percentage_random will make > 50% of the IO to be random. However, when I look at the storage unit, > I'm seeing between 85-87% of read and 15-13% of write. Is that expected based on that config file? If so, what is the reason behind it? With direct=0 you're going through the Windows Volume Cache (similar to the linux page cache), which distorts everything - reads hit in a big cache in DRAM, and writes are collected there and burst out later. > Is there a way to see the distribution of the IO that are > sent/received by fio in order to validate read/write and random/sequential ratio? debug=io logs every I/O; some processing of that would confirm fio is generating what you expect. In linux, strace is an easy way to observe the system calls of a program. In linux, you can use trace points to see what various layers of the kernel driver stack are doing. Jens wrote tools to make the block layer trace points easily accessible (see https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flinux.die.net%2Fman%2F8%2Fblktrace&data=02%7C01%7C%7C480ffdfa8f9f4bf5a30808d6dfa6087a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636942301525041867&sdata=gmb287FVCZp9Nz6Dr3kzar55gmkT2AbRcWIGz54GbOY%3D&reserved=0). > > Thank you. > > Etienne