| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-12-19 | |||
| 21:21:48 | ludovic | I'm testing the HA compute instances with tripleo deployment | |
| 21:22:13 | ludovic | so the nova-evacuate pacemaker process is working well | |
| 21:22:35 | ludovic | but i was suprised by the Ram Filter scheduler | |
| 21:24:37 | ludovic | to explain the case , I have two compute Nodes. I have 2 Computes Nodes. The first compute Node with 31 instances ( total RAM allocated = 177152 M) , the second one with 2 instances ( Total RAM allocated = 24576 ) | |
| 21:24:55 | ludovic | RAM of computes Nodes is 196483 (memory_mb) | |
| 21:26:07 | ludovic | The Host-evacuate worked but 5 VMs was on ERROR with insufficient memory (nova-compute log) and on was with NO STATE (No Host found by RAM Filter) | |
| 21:26:24 | ludovic | one | |
| 21:26:37 | ludovic | I expected the same ERROR on these 6 instances | |
| 21:27:04 | ludovic | HOST NOT FOUND or ERROR with insufficient memory | |
| 21:27:44 | mriedem | so you're evacuating the 31 instances on the one compute node to the other compute node with 2 instances? | |
| 21:27:48 | ludovic | So i don't understand the result | |
| 21:28:02 | ludovic | yes | |
| 21:28:08 | mriedem | and 5 of 31 fail | |
| 21:28:13 | ludovic | 6 | |
| 21:28:14 | mriedem | which release? | |
| 21:28:40 | ludovic | 5 with insufficient memory and 1 with no valid host found | |
| 21:28:44 | mriedem | if you're in pike+ and using the FilterScheduler, you should remove the RamFilter | |
| 21:28:46 | ludovic | ocata | |
| 21:29:06 | mriedem | so the problem is, | |
| 21:29:22 | mriedem | the scheduler has a point in time snapshot of the resources from the compute, per request, | |
| 21:29:37 | ludovic | i use ocata for the moment | |
| 21:29:53 | mriedem | and the ram usage doesn't change until one of the evacuations makes it to the compute and claims those resources, and updates the compute node record in the db, which the scheduler will read in the next scheduling attempt | |
| 21:30:21 | mriedem | so the problem is if you're sending all 31 evacuate requests in a for loop, for example, with no time in between for the scheduler to catch up to the changes in the computes, | |
| 21:30:47 | mriedem | the scheduler thinks the compute is fine and sends the instance there, but the claim on the compute might fail because another request claimed those resources in the meantime | |
| 21:31:01 | ludovic | yes exactly | |
| 21:31:18 | mriedem | this should be fixed in pike, | |
| 21:31:35 | mriedem | because in pike, the RamFilter can be removed and the FilterScheduler uses the Placement service to claim the resources during scheduling | |
| 21:32:05 | mriedem | any claim collisions on the compute node in pike due to concurrent requests will be retried up to 3 times | |
| 21:32:35 | mriedem | otherwise what you're hitting is latent behavior | |
| 21:32:36 | ludovic | ah ok so with ocata the process is not enough efficient ? | |
| 21:32:59 | mriedem | correct; the late claim on the compute has always been a known issue with scheduling | |
| 21:33:10 | mriedem | with server create, if you hit this, we would reschedule to another compute | |
| 21:33:16 | mriedem | we don't do reschedules with evacuate though | |
| 21:33:45 | ludovic | But is it possible to influence the evacuate with max_concurrent_build ? | |
| 21:33:49 | ludovic | in nova.conf ? | |
| 21:34:27 | ludovic | by default this parameter is 10 , if we reduce to one ? | |
| 21:36:34 | mriedem | no max_concurrent_build is for server create, not evacuate | |
| 21:36:56 | ludovic | ah ok i understand . | |
| 21:36:58 | mriedem | there is no option like that for limiting evacuates | |
| 21:37:34 | mriedem | that's not to say one couldn't be added, but adding that in queens or pike doesn't make sense when we've solved this part of the problem in the scheduler | |
| 21:38:58 | mriedem | still, it seems reasonable to allow limiting the number of concurrent evacuates on a given compute, since we do that for spawn and live migrate | |
| 21:39:03 | mriedem | i wouldn't be opposed to adding something like that | |
| 21:40:54 | ludovic | ok thank you for your explanations, it's precious for me because I'm testing openstack for a big French Company you know | |
| 21:41:40 | ludovic | And the goal is to see if we can in the future replace the massive usage of WMare with OpenStack you know | |
| 21:41:59 | mriedem | oolala | |
| 21:42:00 | ludovic | near future | |
| 21:42:21 | mriedem | ok. would be cool if you could test this out on a pike deployment. | |
| 21:42:32 | mriedem | to make sure the filter scheduler + placement is correctly handling this for you | |
| 21:42:42 | ludovic | That's why i asked if reservation and /or prioritizing exist under OpenStack | |
| 21:42:56 | mriedem | remember to remove the RamFilter in pike if you're using the FilterScheduler since (1) it's redundant and (2) it will remove the memory_mb claim in the compute | |
| 21:43:39 | ludovic | ok | |
| 21:44:40 | ludovic | don't you think it will be interesting to add the possibility to have spare Compute Nodes ? | |
| 21:45:02 | ludovic | with aggregate host spare for example | |
| 21:45:10 | mriedem | you mean build something into nova to mark specific computes as only used for evacuate? | |
| 21:45:37 | ludovic | or in a aggregat to propose the prioritinzing of important workload when evacuate | |
| 21:45:46 | ludovic | yes for example | |
| 21:46:35 | mriedem | yeah idk, maybe. i wouldn't want to change the evacuate api to pass through scheduler hints probably. | |
| 21:46:36 | ludovic | That will be ensure a very good SLA because the evacuate processus would be securized | |
| 21:46:54 | mriedem | i don't know how many deployments just have compute nodes lying around as spares for evacuate | |
| 21:47:20 | mriedem | you can also control which host is used client-side | |
| 21:47:21 | mriedem | as noted | |
| 21:48:00 | mriedem | so as a client, if you have a special "evacuate" host aggregate, you could round robin through those hosts and send it with the evacuate request | |
| 21:48:38 | mriedem | but, as your evacuate aggregate starts to fill it, it is no longer spare capacity | |
| 21:48:39 | mriedem | so... | |
| 21:48:46 | mriedem | *fill up | |
| 21:49:55 | openstackgerrit | Ed Leafe proposed openstack/nova master: Make conductor pass and use host_lists https://review.openstack.org/511358 | |
| 21:49:56 | openstackgerrit | Ed Leafe proposed openstack/nova master: Change compute RPC to use alternates for resize https://review.openstack.org/526436 | |
| 21:50:01 | edleafe | ^^ fixed pep8 booboo | |
| 21:50:33 | ludovic | it seems to not be easy to design ... | |
| 21:50:49 | ludovic | evacuate is temporary | |
| 21:51:14 | ludovic | until the source node repaired | |
| 21:51:47 | ludovic | so the goal is to failback and so free the evacuate aggregat | |
| 21:52:45 | mriedem | ludovic: sure, that's why it's not something built natively into nova | |
| 21:52:58 | mriedem | nova provides the API so a higher level service can orchestrate whatever you need here | |
| 21:53:57 | mriedem | edleafe: ack, will run the ironic patch on that | |
| 21:55:50 | jose-phillips | hi any idea | |
| 21:56:00 | jose-phillips | why im im getting this error on devstack | |
| 21:59:05 | jose-phillips | using qemu | |
| 21:59:05 | jose-phillips | can't apply process capabilities -1 | |
| 22:00:51 | rybridges | for the record mriedem, i tried recompiling qemu like you said... took the latest version i could find here http://ftp.redhat.com/redhat/linux/enterprise/7Server/en/RHEV/SRPMS/ | |
| 22:00:52 | wind | Hi, I'm trying to make a rest-api call from ironic to nova, was hoping if someone could gimme a hint how to do so ... Ironic.conf doesn't have anything in there for nova, so should i build a keystoneclient session, and then use that to retrieve the token, and compute-api endpoint and then send the GET & PUT Commands | |
| 22:00:56 | rybridges | still get the exact same erroro | |
| 22:01:21 | wind | Any suggestions would be really helpful.... I'm new to openstack | |
| 22:05:47 | mnaser | DEBUG? | |
| 22:05:47 | mnaser | 2017-12-19 22:04:53.593 44047 DEBUG nova.compute.resource_tracker [req-2858b7b9-d273-4347-aff3-dfa3fa10f4cd - - - - -] We're on a Pike compute host in a deployment with Ocata compute hosts. Auto-correcting allocations to handle Ocata-style assumptions. _update_usage_from_instance /usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:1042 <=== wouldnt this be nice if this was a warning instead of | |
| 22:06:17 | mnaser | given that I just found out Nova thinks there are Ocata hosts in my all-pike installation (i guess something is wrong somewhere) | |
| 22:08:02 | ludovic | mriedem: Just to be sure, in order to influence the host-evacuate process, i don't have other options than using host aggregate with flavor and extra_specs ? | |
| 22:08:36 | mnaser | ludovic: yes, but afaik migrations use the flavor and extra_specs that it had at the moment of provisioning | |
| 22:09:12 | mnaser | ex: if your flavor A had aggregate "foo" when a VM is booted, and you changed the aggregate to "bar", and then do a migration/evacuate, it will still try to look for "foo" | |
| 22:09:21 | mnaser | afaik that has been my experience but i might be wrong? | |
| 22:10:54 | ludovic | oh yes so it's necessary to provide two aggregates at the moemet of provisioning "prod" and "spare" | |
| 22:11:03 | ludovic | moment | |
| 22:11:15 | mnaser | well ideally if you launched an instance in 'prod', you dont want it to be evacuated into 'staging' | |
| 22:11:26 | mnaser | because maybe your host aggregate hardware in staging gets turned off at 5pm | |
| 22:13:30 | mnaser | oh would you look at that | |
| 22:13:54 | mnaser | "Unable to submit allocation for instance 42e2e0cd-0dd2-48c0-b873-ed9cd08a451a" .. placement returning 400, JSON does not validate: None is not of type 'string' ... instance['project_id'] == None somehow?! | |
| 22:14:12 | mnaser | does this ring any bells to anyone or should i start diving in | |
| 22:14:47 | penick | Working hard to get live migrations functional is like cranking on the handle for a jack-in-the-box. Except the thing in the box is a fist. And it punches you in the face. | |
| 22:15:21 | ludovic | mnaser: that sound JSON Filter not working no ? | |
| 22:16:03 | mnaser | penick: its always worked, but i guess this is a weird pike corner case, i see this - https://bugs.launchpad.net/nova/+bug/1701129 but it should be in pike which we're running | |