{"action":"created","issue":{"url":"https://api.github.com/repos/axboe/fio/issues/175","repository_url":"https://api.github.com/repos/axboe/fio","labels_url":"https://api.github.com/repos/axboe/fio/issues/175/labels{/name}","comments_url":"https://api.github.com/repos/axboe/fio/issues/175/comments","events_url":"https://api.github.com/repos/axboe/fio/issues/175/events","html_url":"https://github.com/axboe/fio/issues/175","id":155366416,"number":175,"title":"FIO 2.8 filename=/dev/nvme0n1:/dev/nvme1n1 generates uneven iodepths on the interface when checked via iostat","user":{"login":"akoundal","id":19417434,"avatar_url":"https://avatars.githubusercontent.com/u/19417434?v=3","gravatar_id":"","url":"https://api.github.com/users/akoundal","html_url":"https://github.com/akoundal","followers_url":"https://api.github.com/users/akoundal/followers","following_url":"https://api.github.com/users/akoundal/following{/other_user}","gists_url":"https://api.github.com/users/akoundal/gists{/gist_id}","starred_url":"https://api.github.com/users/akoundal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akoundal/subscriptions","organizations_url":"https://api.github.com/users/akoundal/orgs","repos_url":"https://api.github.com/users/akoundal/repos","events_url":"https://api.github.com/users/akoundal/events{/privacy}","received_events_url":"https://api.github.com/users/akoundal/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2016-05-17T21:28:25Z","updated_at":"2016-05-18T02:10:10Z","closed_at":null,"body":"Below mentioned file generates uneven iodepths for the two targets when recording with iostats \r\n###FILE START####\r\n[global]\r\nname= Test\r\nioengine=libaio\r\ndirect=1\r\nbuffered=0\r\nsize=100%\r\nrandrepeat=0\r\ntime_based\r\nnorandommap\r\nrefill_buffers\r\nlog_avg_msec=1000\r\ngroup_reporting\r\nfilename=/dev/nvme0n1:/dev/nvme1n1\r\n\r\n[rd_rnd_qd_128_4k_4w]\r\nstonewall\r\nbs=4k\r\niodepth=32\r\nnumjobs=4\r\nrw=randread\r\nruntime=3600\r\n###FILE END####\r\n\r\n**This way generates correct iodepth expected as per the parameters.** (i.e. even IODEPTH reported with iostats for both the nvme drives) \r\n###FILE START####\r\n[global]\r\nname= Test\r\nioengine=libaio\r\ndirect=1\r\nbuffered=0\r\nsize=100%\r\nrandrepeat=0\r\ntime_based\r\nnorandommap\r\nrefill_buffers\r\nlog_avg_msec=1000\r\ngroup_reporting\r\nbs=4k\r\niodepth=32\r\nnumjobs=4\r\nrw=randread\r\nruntime=3600\r\n\r\n[drive1] \r\nstonewall\r\nfilename=/dev/nvme0n1\r\n[drive2]\r\nfilename=/dev/nvme1n1\r\n\r\n\r\n###FILE END####"},"comment":{"url":"https://api.github.com/repos/axboe/fio/issues/comments/219906603","html_url":"https://github.com/axboe/fio/issues/175#issuecomment-219906603","issue_url":"https://api.github.com/repos/axboe/fio/issues/175","id":219906603,"user":{"login":"axboe","id":2619634,"avatar_url":"https://avatars.githubusercontent.com/u/2619634?v=3","gravatar_id":"","url":"https://api.github.com/users/axboe","html_url":"https://github.com/axboe","followers_url":"https://api.github.com/users/axboe/followers","following_url":"https://api.github.com/users/axboe/following{/other_user}","gists_url":"https://api.github.com/users/axboe/gists{/gist_id}","starred_url":"https://api.github.com/users/axboe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/axboe/subscriptions","organizations_url":"https://api.github.com/users/axboe/orgs","repos_url":"https://api.github.com/users/axboe/repos","events_url":"https://api.github.com/users/axboe/events{/privacy}","received_events_url":"https://api.github.com/users/axboe/received_events","type":"User","site_admin":false},"created_at":"2016-05-18T02:10:10Z","updated_at":"2016-05-18T02:10:10Z","body":"You have one IO thread in your first example, and this thread will roundrobin between issuing IO to the two files. This means they share the in-kernel aio context, and everything else. But fio will issue fairly between the two.\r\n\r\nThat's how you defined the job file. In fio, each job is a separate thread (or process, in your case). Your other example, that one is using a thread per file. So it really all comes down to what kind of behavior you want to model."}}