| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-cyborg - 2018-08-30 | |||
| 19:58:40 | efried | okay. That stuff is *also* hypervisor-specific. | |
| 19:59:09 | Sundar | Sure, it is also device-specific. The device driver has to do this in a hypervisor-specific way | |
| 19:59:18 | efried | May be the purview of the "driver" rather than the "plugin" but still. | |
| 19:59:44 | Sundar | Yes, I think we already agree that the driver would be hypervisor-specific | |
| 19:59:51 | efried | it may in fact be device *type* specific, not necessarily device specific. | |
| 20:00:02 | efried | Anyway, I think we're in violent agreement on the high points here. | |
| 20:00:36 | Sundar | Well, the actual act of writing to the device and manipulating it to create a new vGPU type or program a bitstream would in fcat be specific to device models or vendors. | |
| 20:02:19 | Sundar | So, the Cyborg and its driver(s) would have to handle the equivalent of port binding (device specific) and plug. That gives us a VAN with the device end configured, ready to be attached to an instance | |
| 20:02:46 | Sundar | After that, Nova virt can take that VAN and do the needful for that hypervisor, in a device-independen way | |
| 20:02:48 | efried | and does that happen in a separate step prior to spawn? | |
| 20:03:18 | Sundar | Yes. I shared a flow diagram with you this morning. | |
| 20:03:31 | Sundar | Before we get to that :), | |
| 20:04:11 | Sundar | the role of os-acc plugin is highly diminished with these aspects considered. The driver does the device end, Nova virt does the instance end | |
| 20:04:48 | efried | "nova virt" by invoking the plugin through os-acc? | |
| 20:04:55 | Sundar | The possible role for os-acc extensions is to handle device-compute interactions, such as NUMA affinity for interrupt vectors. | |
| 20:06:41 | Sundar | Nova virt calls os-acc, and that in turn calls Cyborg in some way. When that call returns, Nova virt has to persist the instance - VAN association in Nova's db. neither os-acc nor Cyborg can do that, so it has to go to Nova virt. The subsequent step of attaching to the VM is already in Nova virt. | |
| 20:06:48 | Sundar | So, what does the plugin do for attach? | |
| 20:07:07 | efried | no idea | |
| 20:07:19 | efried | if it's nothing, it's nothing. | |
| 20:08:03 | Sundar | I understand your need for keeping things hypervisor-specific, but Nova virt is already hypervisor-specific, right? | |
| 20:08:14 | efried | yup | |
| 20:08:39 | efried | I don't really have a stake in getting lots of code into these plugins. | |
| 20:08:48 | efried | I just want to make sure we don't end up with linux-isms in common code paths. | |
| 20:08:54 | efried | linux/libvirt | |
| 20:09:16 | Sundar | OK. Could you look at the flow diagram I shared this morning? | |
| 20:09:26 | efried | If I didn't have to write a separate driver/plugin at all, I would be pretty happy. But I'm not sure that is going to happen. | |
| 20:10:08 | Sundar | Not to spoil your afternoon, but I think you would need PowerVM drivers for GPUs, FPGAs, or whatever you support :) | |
| 20:11:23 | Sundar | Are you looking at Power+KVM hypervisor too? | |
| 20:12:10 | Sundar | brb in 5 min | |
| 20:12:19 | efried | I don't know anything about pkvm | |
| 20:14:00 | Sundar | back. ok | |
| 20:15:43 | Sundar | Back to os-acc plugins. The possible role for os-acc plugins is to handle device-compute interactions, such as NUMA affinity for interrupt vectors. But it may be too much to bring them in this spec. Shall we put os-acc plugins as a placeholder until we get to that? | |
| 20:18:26 | efried | "NUMA affinity for interrupt vectors" <== Greek to me. | |
| 20:18:51 | Sundar | OK, NUMA affinity for devices in general? | |
| 20:19:11 | efried | If you don't have an actual use case for os-acc plugins, then... | |
| 20:19:35 | efried | NUMA affinity is something we want to be able to handle via resource provider structure. | |
| 20:19:48 | efried | we can't yet | |
| 20:19:56 | efried | but it's something we should bring up (again) in Denver. | |
| 20:20:49 | Sundar | Sure. Shall we have a f2f chat at Denver? It'll be good to sync up and drive the specs to a close shortly thereafter | |
| 20:21:14 | efried | definitely | |
| 20:21:30 | efried | If I were you, I would ask for a nova/cyborg cross-project session. | |
| 20:21:52 | efried | Based on what I know of people's schedules, I would say Tuesday would be a good day for it. | |
| 20:22:03 | Sundar | I have entered a slot in Nova etherpad. May be I should ping melwitt? | |
| 20:23:02 | efried | It might be better to schedule something during cyborg's time (M/T) where you can get the "placement cores" to visit the cyborg room and spend a couple of hours hashing stuff out. | |
| 20:23:33 | efried | And keep it on the nova schedule in case we a) don't get everything sorted; and/or b) need a wider audience. | |
| 20:23:48 | Sundar | OK | |
| 20:24:04 | efried | Send something to the dev ML, like what Blazar did, to organize the Tuesday thing. | |
| 20:24:05 | efried | oh | |
| 20:24:14 | efried | Sorry, I forgot, Blazar sent that directly to people. | |
| 20:24:18 | efried | not to the ML. | |
| 20:24:34 | Sundar | Meanwhile, please LMK if you are ok with the flow diagram. Did you get it? | |
| 20:26:34 | efried | I got it. | |
| 20:27:47 | Sundar | Great. I'll grab lunch and get back in 15 min. We can shake it out after that. | |
| 20:29:57 | efried | give me 20 | |
| 21:07:14 | Sundar | efried: Ready any time | |
| 21:08:00 | efried | Sundar: Nova meeting in progress. Not sure how long it will last, but not beyond top of the hour. Will you be around? | |
| 21:09:31 | Sundar | Yes | |
| 21:21:08 | efried | Sundar: ō/ | |
| 21:23:57 | Sundar | That was quick. | |
| 21:24:32 | efried | now where did I put that diagram... | |
| 21:24:56 | efried | got it | |
| 21:25:14 | Sundar | The main thing to note in the flow is that there isn't much that os-acc is doing. | |
| 21:25:59 | Sundar | Most of it is Nova virt or Cyborg. I am still pondering what os-acc can do that is not device-specific (and so in Cyborg) or hypervisor-specific (and so in Nova virt) | |
| 21:26:59 | efried | Sundar: as a touchpoint/router and future extension point for those pieces of the requests, it may be useful. | |
| 21:27:05 | efried | but I'm really not sure. | |
| 21:27:30 | Sundar | Yes, I agree. That's what I was thinking | |
| 21:28:21 | efried | not sure it makes much sense for the calls from os-acc to cyborg API/conductor to be asynchronous if it's just going to poll for them to complete right away... | |
| 21:29:37 | Sundar | The calls may take milliseconds to possibly seconds, depending on whether Glance bitstreams need to fetched, one or more FPGAs need to be programmed, etc | |
| 21:30:20 | efried | so? | |
| 21:30:27 | Sundar | That is why it is async | |
| 21:30:31 | efried | The caller is blocking on their completion anyway | |
| 21:30:39 | efried | So why does it matter if they take "a long time"? | |
| 21:30:48 | Sundar | Ah, the n-cpu could do other things while this is blocked, right? | |
| 21:30:53 | efried | could it? | |
| 21:31:06 | efried | I guess. | |
| 21:31:18 | Sundar | The allocation of other resources -- networking, storage -- could go in parallel | |
| 21:31:21 | efried | Just sounds like it would make things pretty complicated. | |
| 21:31:36 | efried | If n-cpu wanted to parallelize, it could send that request off in its own thread. | |
| 21:31:46 | efried | But having it be async *forces* n-cpu to deal with that async-ness. | |
| 21:31:49 | efried | Anyway, this is really a nit. | |
| 21:31:59 | efried | not a substantive thing. | |
| 21:32:03 | Sundar | The n-cpu to os-acc could be async too. | |
| 21:32:15 | Sundar | So, os-acc deals with the async weirdness. | |
| 21:32:59 | Sundar | Hmm, well, os-acc to Cyborg can be sync if os-acc itself is called in an async way | |
| 21:33:13 | Sundar | Just wondering if a REST API call cna really block for seconds | |
| 21:33:48 | efried | absolutely. | |
| 21:34:10 | efried | I'm sure there's a connection timeout at the HTTP level. But seconds shouldn't be a problem. | |
| 21:34:16 | Sundar | Are there precedents in OpenStack where a REST API blocks for seconds? | |
| 21:35:57 | efried | I have no idea. | |
| 21:36:10 | efried | That might be something edleafe and/or cdent would know. | |
| 21:37:22 | Sundar | OK. Another note: The proposal calls for persisting VAN objects in Cyborg db, but Nova db maintains the association between the instance and its VAN UUIDs . That s because, on a VM suspend for example, Nova would need to call os-acc to detach VANs but not deallocate them | |
| 21:37:55 | Sundar | Never mind, the detach would be in Nova virt. | |
| 21:38:03 | Sundar | But you get the point | |
| 21:38:29 | Sundar | On a termination, Nova virt would detach each VAN and then call os-acc to release the resources | |
| 21:38:47 | efried | right, some kind of handle (i.e. the VAN UUID) would need to be associated with the instance in the nova db. | |
| 21:38:54 | Sundar | Yes | |
| 21:39:14 | efried | As long as we can query cyborg with the UUID to get the rest of the VAN info, the UUID should be the only thing we need to store, I would think. | |
| 21:39:21 | Sundar | Yes | |
| 21:42:33 | Sundar | Good. Since we are in agreement, I'll write this up in the spec. | |
| 21:43:55 | efried | Sundar: Note that I'm only one person, and my stake in the details we've just discussed is not an especially strong one. | |