| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2020-02-07 | |||
| 18:38:25 | dansmith | sean-k-mooney: okay so something similar for cyborg I guess | |
| 18:38:31 | sean-k-mooney | since we also dont have pci_request spec objects | |
| 18:39:04 | sean-k-mooney | well for now we could just check if the flavor has accl:device-profile or whatever teh extraspec is | |
| 18:39:18 | dansmith | right | |
| 18:40:22 | sean-k-mooney | im not sure we will be able to do that check in the api because we would need to check the embeded flaovr form the cell db. actully no we can. we can grab it from the request_spec in the api db | |
| 18:40:42 | sean-k-mooney | so ya we can reject the live migration in the api layer until we support that | |
| 18:41:07 | dansmith | not sure what the problem is.. the api can look at the instance's embedded flavor | |
| 18:41:30 | sean-k-mooney | yep it can so no problem | |
| 18:41:45 | sean-k-mooney | i was thinking we might need to do a down call to the cell db to get it but we dont | |
| 18:41:49 | sean-k-mooney | so all good | |
| 18:42:06 | dansmith | we do to get the actual embedded flavor, but that's fine of copurse | |
| 18:42:21 | dansmith | anything that does anything on an instance gets the instance record from the cell in the api | |
| 18:42:28 | sean-k-mooney | well the embeded flavor is aslo stored in the api db in the request spec | |
| 18:42:53 | dansmith | it's stored as it was at the time of creation, but not necessarily the same as what the instance has now | |
| 18:43:04 | dansmith | and if we've done a data migration or something they could have diverged | |
| 18:43:11 | sean-k-mooney | oh that wont be update after reisze? | |
| 18:43:18 | sean-k-mooney | ah ok | |
| 18:43:25 | dansmith | the instance's actual flavor is what we should use, and it's no more expensive to get | |
| 18:43:44 | sean-k-mooney | sure makes sense | |
| 18:45:16 | mriedem | the requestspec.flavor is updated as part of a resize, but .... there be bugs | |
| 18:50:04 | spatel | sean-k-mooney: here is the virsh capability - http://paste.openstack.org/show/789301/ | |
| 18:51:00 | spatel | here is the vCPU pinning map - http://paste.openstack.org/show/789302/ | |
| 18:58:23 | sean-k-mooney | ok so the first 15 cpus are pinned to host numa node 0 | |
| 18:58:33 | spatel | Yes | |
| 18:58:59 | sean-k-mooney | and the second 15 are all pinned to host numa node 1 | |
| 18:59:02 | sean-k-mooney | so this is correct | |
| 18:59:06 | spatel | Yes | |
| 18:59:51 | spatel | if you see all looks correct from VM point of view.. | |
| 19:00:21 | spatel | VM correctly mapped its vCPU pins across physical numa nodes | |
| 19:00:43 | sean-k-mooney | yes so you left out one of the imporatn numa elelmnt form the vm | |
| 19:00:59 | spatel | ? | |
| 19:01:10 | sean-k-mooney | you left out the numa element | |
| 19:01:11 | mriedem | important numa elements from the vm | |
| 19:01:20 | mriedem | translation-as-a-service | |
| 19:01:35 | sean-k-mooney | oh ya i miss typed talking downstream as well | |
| 19:01:36 | spatel | I am not following you guys.. | |
| 19:01:39 | sean-k-mooney | ill slow down | |
| 19:01:56 | mriedem | remember how this isn't a support channel? | |
| 19:02:30 | sean-k-mooney | nova will map the first half of the cpus to numa node 0 in the guess so cores 0-15 and form what you have show it is working correctly | |
| 19:03:05 | spatel | Yes.. that is what i am also saying.. CPU pins correctly mapped out to NUMA nodes | |
| 19:03:52 | spatel | This is what NUMA looks inside VM0 -> http://paste.openstack.org/show/789304/ | |
| 19:04:21 | spatel | now question is when i run application why i am seeing poor performance? | |
| 19:04:50 | Sundar | gibi: Any pointers to how you handled reschedule for bandwidth provider? | |
| 19:04:56 | spatel | Do you think i need to do something with -> hw:cpu_thread_policy ? | |
| 19:05:28 | sean-k-mooney | spatel: it woudl appear the aplication is not correctly optimising for the numa toplogy. | |
| 19:05:41 | sean-k-mooney | hw:cpu_thread_polciy wont help | |
| 19:06:23 | sean-k-mooney | you can alther the cpu thread and socket toplogy in the guest which might but this does not seeam to be a nova/libvirt issue | |
| 19:07:12 | sean-k-mooney | spatel: my guess is that you have not toled the guest it is using hyper treads so it is miss allocationg threads internally to cores it think are independed but are not | |
| 19:07:33 | spatel | I am just trying to understand if i run application on bare metal then performance is great but when i create VM with all CPU then performance is bad.. | |
| 19:07:36 | sean-k-mooney | hw:cpu_thread_policy=isolate woudl help but it woudl reduce the available core count | |
| 19:08:06 | sean-k-mooney | you shoudl set hw:cpu_treads=2 and hw:cpu_sockets=2 | |
| 19:08:11 | spatel | how may core count it will reduce ? | |
| 19:08:16 | sean-k-mooney | but you cant do that with 30 cpus | |
| 19:08:26 | sean-k-mooney | you need either 28 or 32 | |
| 19:08:35 | spatel | i will go with 28.. | |
| 19:08:39 | Sundar | gibi: "does the series gracefully handle that move operations are not supported yet with accelerators?" There was an earlier attempt to explicitly block unsupported ops: https://review.opendev.org/#/c/674726/ But it was decided that it is not needed, and we should document the supported ops in Cyborg. | |
| 19:08:39 | sean-k-mooney | so that you have an even number of cpus per numa node/socket | |
| 19:09:20 | spatel | you are saying i should set flavor -> hw:cpu_treads=2 and hw:cpu_sockets=2 and run benchmark right? | |
| 19:09:35 | sean-k-mooney | spatel: set hw:cpu_treads=2 and hw:cpu_sockets=2 and do not set hw:cpu_thread_policy=isolate and see if that fixes the issue | |
| 19:09:48 | spatel | sean-k-mooney: sounds good | |
| 19:10:12 | sean-k-mooney | spatel: actuly i misspelled the first one check the flavor docs to confrim they are right | |
| 19:10:27 | sean-k-mooney | spatel: https://docs.openstack.org/nova/latest/user/flavors.html | |
| 19:10:37 | spatel | I will check doc don't worry all i need clue to try something :) | |
| 19:11:17 | Sundar | gibi: "nova needs to grow support for migration with arqs" Since Cyborg does PCI passthrough, live migration is not supported. | |
| 19:11:40 | spatel | sean-k-mooney: you are saying that option will tell my VM you have two socket.. | |
| 19:11:41 | sean-k-mooney | by default openstack emulates each gust cpu as a sperate socket which is incorrect if you have HT enabled on the host | |
| 19:11:54 | spatel | I do have HT enabled | |
| 19:12:17 | sean-k-mooney | yep so you want to tell the vm it has 2 threads per cpu and in this case 2 socket 1 per numa node | |
| 19:12:34 | sean-k-mooney | that will help the guest kerenl make correct schduling decisions | |
| 19:13:03 | spatel | sean-k-mooney: i think you are correct.. that could be the issue why erlang getting confused | |
| 19:13:19 | spatel | because erlang also run inside VM and it should have own scheduler | |
| 19:14:40 | spatel | sean-k-mooney: I will keep you posted about my testing.. (today isn't possible but Monday i will have some result. | |
| 19:15:44 | spatel | sean-k-mooney: let me create i should set hw:cpu_treads=2 and hw:cpu_sockets=2 and hw:numa_node=2 right? | |
| 19:16:06 | spatel | otherwise it won't let me run my VM on two numa nodes | |
| 19:16:52 | sean-k-mooney | the socket and numa nodes dont have to match but it general works better | |
| 19:17:13 | Sundar | sean-k-mooney: Catching up on earlier discussion about instance ops with Cyborg. Explicit blocking of requests with a device profile name in the extra specs ( https://review.opendev.org/#/c/674726/) was not considered the way to go. Is that still your thinking? | |
| 19:18:11 | spatel | sean-k-mooney: i will set all three option and give it a try.. thank you.. | |
| 19:18:38 | sean-k-mooney | Sundar: am honestly i dont rember the full context of the discussin. i know we discussed this at lenght but cant recal what the decision was | |
| 19:19:32 | sean-k-mooney | i think we said skip the explcit check but document what works? but we can aslo block it if we want | |
| 19:20:18 | sean-k-mooney | So the consensus is Option 2: | |
| 19:20:19 | sean-k-mooney | > Gradually phase in the support for the server operations and document the limitations in the meantime but don't actively block them in the API like this change does. | |
| 19:20:21 | sean-k-mooney | We will state the limitations, if any, in Cyborg documentation. | |
| 19:20:30 | sean-k-mooney | that was the last comment on that | |
| 19:22:11 | sean-k-mooney | option 2 was "2. Gradually phase in the support for the server operations and document the limitations in the meantime but don't actively block them in the API like this change does. They either work (by chance) or they don't, but they aren't officially supported. Once they are supported, we patch them in without a new microversion as bug fixes (or just claim test support so they are no longer | |
| 19:22:13 | sean-k-mooney | considered experimental)." | |
| 19:23:18 | sean-k-mooney | gibi: dansmith ^ are ye still ok with that regarding the livemigation check | |
| 19:23:44 | sean-k-mooney | so no check for now and document. and we can add one if we want in the future | |
| 19:25:37 | dansmith | sean-k-mooney: where was that? in the spec? | |
| 19:25:46 | dansmith | it really depends on what the result is | |
| 19:25:55 | sean-k-mooney | https://review.opendev.org/#/c/674726/ | |
| 19:26:01 | sean-k-mooney | its was a nova patch | |
| 19:26:11 | dansmith | if it's data corruption, state intervention required, etc then it needs a check to be graceful | |
| 19:26:22 | dansmith | if it fails in some reasonable way then I'm not so concerned | |
| 19:26:42 | sean-k-mooney | dansmith: i think libvirt will raise an error | |
| 19:27:03 | sean-k-mooney | qemu will reject a migration if the domain has a hostdev that is not of type usb | |
| 19:27:20 | dansmith | for live migration I assume, but based on the changes we've made to the flow, I'm not sure what will happen on resize | |
| 19:27:20 | sean-k-mooney | so we will get to the migrate call and it will fail | |
| 19:27:24 | sean-k-mooney | yes | |
| 19:27:28 | dansmith | we might migrate the instance and ignore the fact that it's missing an accelerator | |
| 19:27:59 | sean-k-mooney | ya i dont know what will happen for resize evacuate or shelve | |