| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2021-02-15 | |||
| 16:34:37 | kukacz | no worries, thanks for checking that! | |
| 16:40:28 | kukacz | lyarwood: is the LVM backend in a good shape otherwise? I am planning to deploy "local disk" compute nodes utilizing LVM as image type after doing own evaluation, comparing it to qcow2/raw options. | |
| 16:41:33 | lyarwood | kukacz: It doesn't get as much love as the default qcow2 backend and isn't something we support downstream as a result | |
| 16:53:38 | kukacz | lyarwood: hmm, I see. I've found LVM superior both in performance characteristics (qcow2 on ext4 was badly stealing most of NVMe random pattern iops) and availability-operations capabililites though | |
| 16:55:06 | kukacz | lyarwood: when writing "we support ..." you meant a particular vendor or Nova project? | |
| 16:55:35 | lyarwood | kukacz: Vendor sorry, Red Hat. | |
| 16:56:00 | kukacz | I am considering putting this into production, therefore I am so curious :-) | |
| 16:56:41 | kukacz | ok, it might even mean both in that case ;-) | |
| 16:59:53 | kukacz | I might still be missing something. especially I wonder if that performance hit on qcow2 (on default ext4 on 1-2 disk mdraid level 0) is common or there's an factor I've ignored so far | |
| 17:59:52 | sean-k-mooney | kukacz: qcow2 tends not to have a large perfromnce hit if you preallocate the file by the way | |
| 18:00:11 | sean-k-mooney | at least not on an xfs host filesystem | |
| 18:00:40 | sean-k-mooney | im not sure you really rant to run raid 0 | |
| 18:01:11 | sean-k-mooney | raid 10 maybe but unless you hate your customers data raid 0 is proably not what you want to use in production | |
| 18:05:59 | kukacz | sean-k-mooney: I had the preallocation enabled while testing. the performance was good in sequential operations (>3300MiB/s), not in random though. in random, the 750k IOPS seen in lvm or raw are dropping to around 30k. tested on precreated 80GiB large fio file, running concurrently 6 instances | |
| 18:06:32 | kukacz | I was using ext4 without extra parameters except -m0. same as with raw, though | |
| 18:07:00 | sean-k-mooney | kukacz: try turing off the atime? i think | |
| 18:07:57 | kukacz | hmm, I believe fio keeps the single testfile opened for all the time of test. but I might try that anyway | |
| 18:08:02 | sean-k-mooney | for xfs i do defaults,noatime,nodiratime,logbufs=8,logbsize=256k,largeio but you will proably want something similar for ext4 | |
| 18:08:25 | sean-k-mooney | oh i have /var/lib/docker ext4 defaults,noatime 0 0 | |
| 18:09:06 | sean-k-mooney | kukacz: historically | |
| 18:09:30 | sean-k-mooney | kukacz: lvm had better io performacne but it took longer to deploy vms and used more space | |
| 18:10:02 | sean-k-mooney | basically becasue even when using thing providioning it need to write all the data for the base iamge every time a vm boots | |
| 18:10:31 | sean-k-mooney | we dont do any kind of snapshoting in the lvm driver to merged multiple thin provisioned images | |
| 18:10:55 | sean-k-mooney | for the qcow backedn we share a backing disk and jsut create a thin snapshot | |
| 18:11:21 | kukacz | I was not enabling thin provisioning with LVM, if you mean that nova.conf parameter | |
| 18:11:28 | sean-k-mooney | so if you have long running vms lvm will likely preferm betere even if its less maintianed | |
| 18:12:06 | sean-k-mooney | if you have short lived vms the qcow is proably going to be better. | |
| 18:12:09 | kukacz | I wanted the extents to be preallocate in a predictable way - priorizing volumes to be placed on same disk, if it fits by size | |
| 18:14:38 | kukacz | hmm, the provisioning time was nothing I have even noticed with LVM, but I was using quite smallish but typical ubuntu 20 image (around 5GB) | |
| 18:15:17 | sean-k-mooney | are you on flash | |
| 18:15:32 | sean-k-mooney | if you have ssd then you wont notice it too much | |
| 18:15:44 | sean-k-mooney | if you have HDD and you have multiple vms starting you will | |
| 18:15:52 | kukacz | raid0 was intentional here - focus on performance. if customer is using local disk, they assume that the single instance might be lost anyway. targetting cloud-native replicated applications | |
| 18:16:02 | kukacz | yes, flash, NVMe SSDs | |
| 18:16:27 | sean-k-mooney | kukacz: well jus tmake sure they are aware of that | |
| 18:16:49 | sean-k-mooney | i assume you will be providing them with a ha cinder solution? ceph? | |
| 18:17:03 | sean-k-mooney | so tha they can store all there main data elsewhere | |
| 18:17:04 | kukacz | of course, they're having other options for more traditional network storage | |
| 18:17:30 | kukacz | yes, ceph as cinder backend | |
| 18:17:55 | sean-k-mooney | so local lvm is for low latency local storage | |
| 18:18:12 | sean-k-mooney | for root files system/scratch space | |
| 18:18:39 | sean-k-mooney | it used to work resonbably well for that | |
| 18:18:57 | sean-k-mooney | i is tempthing to just use ceph for everything if you have it | |
| 18:19:17 | sean-k-mooney | possible deploying osd on the compute nodes too | |
| 18:19:49 | sean-k-mooney | if you find the perfomce of lvm is not worth it the rbd driver would be worht considering | |
| 18:20:30 | kukacz | we've had used rbd driver so far as nova backend | |
| 18:21:52 | kukacz | still, ceph is a shared network storage. if it has an issue, everyone in the cloud has an issue. very binding for the operators | |
| 18:22:46 | kukacz | while there's an amount of workload which does not need the features of shared storage. also, they replicate blocks by themselves already, and storing those on ceph, which creates additional copies is counter-productive | |
| 18:24:51 | kukacz | so the idea is to offer a storage layer for these workloads. it would get much better latencies, much higher iops, not being exposed to risk of central storage issue | |
| 18:26:15 | sean-k-mooney | it a valid concern and ya that is what many doo | |
| 18:27:17 | sean-k-mooney | if you can live with it being shared storage you can also modify the crush map to create an ssd only pool with no replication and expsoe that as a seperate cinder volume type | |
| 18:27:42 | sean-k-mooney | anyway if you want best performce then you shoudl use eivehr lvm or raw | |
| 18:28:28 | sean-k-mooney | qcow will be slower the both the other but it has some advnatges if customer will use thing like snapshopt | |
| 18:29:34 | kukacz | so far, I've been quite excited with the LVM experience in this usage. only issue not being able to resize | |
| 18:31:43 | kukacz | I acn even lose a drive from linear VG, only dropping the volumes stored on that particular drive. the rest of workload on same VG keeps running. which is also an advantage compared to raid-0 | |
| 18:31:49 | kukacz | I can ... | |
| 18:34:05 | openstackgerrit | Stephen Finucane proposed openstack/nova master: libvirt: Parse the 'os' element from domainCapabilities https://review.opendev.org/c/openstack/nova/+/673790 | |
| 18:34:05 | openstackgerrit | Stephen Finucane proposed openstack/nova master: libvirt: Auto-detect UEFI, secure boot support https://review.opendev.org/c/openstack/nova/+/682627 | |
| 18:34:06 | openstackgerrit | Stephen Finucane proposed openstack/nova master: WIP: libvirt: Methods to handle request for Secure Boot & non-Q35 machine types https://review.opendev.org/c/openstack/nova/+/682628 | |
| 18:34:07 | openstackgerrit | Stephen Finucane proposed openstack/nova master: libvirt: Add secure boot loader config support https://review.opendev.org/c/openstack/nova/+/775687 | |
| 18:34:07 | openstackgerrit | Stephen Finucane proposed openstack/nova master: libvirt: Add missing hints https://review.opendev.org/c/openstack/nova/+/775688 | |
| 18:34:08 | openstackgerrit | Stephen Finucane proposed openstack/nova master: libvirt: Stop passing around virt_type, caps https://review.opendev.org/c/openstack/nova/+/775689 | |
| 18:34:08 | openstackgerrit | Stephen Finucane proposed openstack/nova master: libvirt: Report secure boot support to scheduler https://review.opendev.org/c/openstack/nova/+/775690 | |
| 18:34:09 | openstackgerrit | Stephen Finucane proposed openstack/nova master: WIP: libvirt: Switch to libvirt's firmware auto-selection https://review.opendev.org/c/openstack/nova/+/775691 | |
| 18:34:10 | openstackgerrit | Stephen Finucane proposed openstack/nova master: WIP: Store UEFI'ness of guest as attribute https://review.opendev.org/c/openstack/nova/+/775692 | |
| 18:34:10 | openstackgerrit | Stephen Finucane proposed openstack/nova master: WIP: libvirt: Stop checking non-host architectures for SEV https://review.opendev.org/c/openstack/nova/+/775693 | |
| 18:39:49 | kukacz | sean-k-mooney: I might retry the perf with xfs. thank you for the parameters. I don't target for top performance comparing lvm-raw-qcow. say 20% difference is perfectly ok if there is better implementation of qcow. just the huge drop (700k -> 30k) I'm seeing is too much already. I have to recheck the formatting/mount options. | |
| 18:41:52 | sean-k-mooney | raw shoudl basically give you the same performace as lvm with a small amount of overhead for ext4/xfs | |
| 18:41:59 | sean-k-mooney | but you can resize ectra | |
| 18:45:03 | kukacz | yes, with raw I'm getting good numbers. resize did not work for me today though, perhaps I hit a bug - resizing an instance with raw disk in queens created an unbootable qcow image | |
| 18:45:33 | sean-k-mooney | did you have the for raw disk set | |
| 18:45:53 | sean-k-mooney | https://docs.openstack.org/nova/latest/configuration/config.html#DEFAULT.force_raw_images | |
| 18:46:47 | kukacz | yes, I have that set to True | |
| 18:47:22 | sean-k-mooney | and https://docs.openstack.org/nova/latest/configuration/config.html#DEFAULT.use_cow_images set to false | |
| 18:49:23 | kukacz | no, I have use_cow_images unset, which probably renders true | |
| 18:49:45 | sean-k-mooney | true is the default | |
| 18:50:12 | aarents | kukacz: seems odd, we are heavy user of raw and resize are fine, we have use_cow_images to false as sean suggest in newton and stein | |
| 18:51:20 | kukacz | aarents: interesting. I'll try that configuration | |
| 18:51:59 | kukacz | though I did not have other issues with raw image deployments and backing files. only issue was this resize | |
| 18:52:33 | sean-k-mooney | so we removed teh raw backend a while ago and folded it into the flat backend https://github.com/openstack/nova/blob/0503bb14409a1a78a82fd8e6f931259fde753df9/nova/virt/libvirt/imagebackend.py#L1286 | |
| 18:53:06 | sean-k-mooney | and it gets is resize form ate dynamically https://github.com/openstack/nova/blob/0503bb14409a1a78a82fd8e6f931259fde753df9/nova/virt/libvirt/imagebackend.py#L593-L595 | |
| 18:54:31 | sean-k-mooney | i think this is what decideds https://github.com/openstack/nova/blob/0503bb14409a1a78a82fd8e6f931259fde753df9/nova/virt/libvirt/imagebackend.py#L537-L545 | |
| 18:55:30 | sean-k-mooney | kukacz: perhaps qemu-image info was retruning something other then raw? | |
| 18:57:58 | kukacz | sean-k-mooney: yes, file tool identified the disk as "QEMU QCOW Image (v3)" | |
| 18:58:46 | sean-k-mooney | before or after the resize | |
| 18:59:16 | kukacz | now I have retried with `use_cow_images = false` and that works | |
| 18:59:55 | sean-k-mooney | did you explictly set teh images_type to raw? | |
| 18:59:57 | kukacz | sean-k-mooney: that was after resize. original disk is identified as "DOS/MBR boot sector" = raw | |
| 19:00:35 | kukacz | sean-k-mooney: yes, explicitely `images_type=raw` | |
| 19:00:37 | sean-k-mooney | i suspect tha twehe we merged raw into flat the behavior changed slightly and now you neeed to set use_cow_iamges=false | |
| 19:00:56 | sean-k-mooney | ya its not an alais for flat which wallows qcow images | |
| 19:01:28 | sean-k-mooney | it just does not crate a backing files when it uses qcow image like the normal qcow one those | |
| 19:07:29 | sean-k-mooney | stephenfin: bauzas so i figured out my fixture issue. i was expecting to use the libvirtneutron fixture but i was using the base one. | |
| 19:07:44 | sean-k-mooney | once i fixed that my func tests started passing. | |
| 19:12:14 | openstackgerrit | sean mooney proposed openstack/nova master: support per port numa policies with sriov https://review.opendev.org/c/openstack/nova/+/773792 | |
| 19:14:21 | kukacz | sean-k-mooney, aarents: thank you! the resize issue is resolved. I did couple more tests and seems ok now. | |
| 19:14:35 | sean-k-mooney | cool | |
| 19:15:17 | sean-k-mooney | raw should be very very close to lvm so if that works for you then it will give you the advanate of better testing and more features too | |
| 19:19:57 | kukacz | sean-k-mooney: hmm, that sounds good. so lvm is the least tested option compared to qcow/raw? not being used in production deployments as often? | |
| 19:25:54 | sean-k-mooney | that is my understnading yes most peopel that dont use qcow for local sotrage use raw then lvm is less common after that | |