https://events.static.linuxfound.org/sites/events/files/slides/kvm-forum-2017-slides.pdf
В статье рассказывается о внутренних механизмах кеширования формата qcow2. 
На производительность очень сильно влияет размер таблиц L2, которые размещаются в памяти. 
Вот тут объяснения и методики расчета размеров кешей: https://github.com/qemu/qemu/blob/master/docs/qcow2-cache.txt 
Задать размер таблиц L2 можно с помощью опции l2-cache-size так:
-drive file=img.qcow2,l2-cache-size=8M
Дефолтный размер - 1Мb, которого достаточно для диска размером 8Gb с кластером 64Kb. 
Дефолтная формула для расчета размера таблиц L2 - disk_size*8/cluster_size 
Вот табличка с замерами производительности диска 20Gb при случайном чтении блоками 4K:
| L2 cache size | Average IOPS | 
|---|---|
| 1 MB | 5100 | 
| 1.5 MB | 7300 | 
| 2 MB | 12700 | 
| 2.5 Mb | 63600 | 
Также рекомендуется очищать неиспользуемые элементы кеша с помощью опции cache-clean-interval:
-drive file=hd.qcow2,cache-clean-interval=60
Утверждается, что в qemu версии 2.10 и более новых реализован более эффективный алгоритм размещения данных кластерах (cluster allocation), который увеличивает IOPS от 15% до 60%. 
как написано тут: https://forum.proxmox.com/threads/qemu-2-5-setting-l2-cache-size-drive-option.27983/ в Proxmox можно добавить параметры к конфигурации диска с помощью qm set… Однако, такой диск не сможет нормально обслуживаться средствами proxmox и не сможет быть загрузочным.
Working Hack
В файлике /usr/share/perl5/PVE/QemuServer.pm нужно найти строчку:
$opts .= ",format=$format" if $format && !$drive->{format};
и после нее добавить чтобы получилось так:
  $opts .= ",format=$format" if $format && !$drive->{format};
  if ($format eq "qcow2") {
              $opts .= ",l2-cache-size=16M";
      }
Discussion