Hello, Well, that explain it. I just tested it on my new test environment and it seems to work fine. Read and write are a lot more aligned this way. This seems to work well on block device (LUN) but performance are not as good on files that are on NAS. It keep the proper ratio between read and write but at a slower pace compared to my previous setup that was segmented by jobs (read sequential, write sequential, read random, write random). By manually adjusting numjobs on each, I was able to get the proper read/write ratio needed and as my jobs are on large files, I was able to see from the storage that the disks where providing the data, not the cache. I guess I'll have to play around to see if that's really what is happening but at first, it look like it. Thank you for your answer. It corrected my assumptions which will help going forward. Etienne -----Message d'origine----- De : Elliott, Robert (Persistent Memory) <elliott@xxxxxxx> Envoyé : October 17, 2018 5:42 PM À : Etienne-Hugues Fortin <efortin@xxxxxxxxxxxxxxxx>; fio@xxxxxxxxxxxxxxx; 'Jens Axboe' <axboe@xxxxxxxxx> Objet : RE: FIO 3.11 > First, when we create a profile, my assumption is that if I have two > jobs without using 'stonewall', each job will run at the same time and > will have the same priority. So, if I want to do a job with a 50% read/write but with 25% random and 75% sequential, I would need a job that look like this: ... > If so, outside of trying to work the numjobs required to get about 50% > R/W, is there a better way of doing this? The OS controls how different threads progress, and there's nothing keeping them in lockstep. These will make each thread implement your desired mix: rwmixread=int Percentage of a mixed workload that should be reads. Default: 50. rwmixwrite=int Percentage of a mixed workload that should be writes. If both rwmixread and rwmixwrite is given and the values do not add up to 100%, the latter of the two will be used to override the first. percentage_random=int[,int][,int] For a random workload, set how big a percentage should be random. This defaults to 100%, in which case the workload is fully random. It can be set from anywhere from 0 to 100. Setting it to 0 would make the workload fully sequential. Any setting in between will result in a random mix of sequential and random I/O, at the given percentages. Comma-separated values may be specified for reads, writes, and trims as described in blocksize. Threads running sequential accesses can easily benefit from cache hits from each other, if there is any caching or prefetching done by the involved drivers or devices. One thread takes the lead and suffers delays, while the others benefit from its work and stay close behind. They can take turns, but tend to stay clustered together. This can distort results. Random accesses avoid that problem, provided the capacity is much larger than any caches.