| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2018-03-29 | |||
| 12:22:26 | edmondsw | efried I replied to your question in https://review.openstack.org/#/c/546713 | |
| 12:49:31 | efried | alex_xu_: hello | |
| 12:52:03 | alex_xu_ | efried: good morning | |
| 12:52:31 | efried | alex_xu_: Not sure I'm the person to answer questions about FPGAs, but I'll give it a shot :) | |
| 12:52:56 | alex_xu_ | efried: in the ptg, we only think about a fpga device only has one function, then we said create resource class for a whole device | |
| 12:53:16 | alex_xu_ | efried: but now, a device can support multi funciton, and each function can be assigned to different VM | |
| 12:53:30 | alex_xu_ | efried: actually it is placement question :) | |
| 12:54:11 | alex_xu_ | efried: so we should create RP for a device, and resource class is function, just like SRIOV device, a device provides multiple function | |
| 12:54:16 | alex_xu_ | does make sense | |
| 12:56:06 | efried | alex_xu_: Yes, that is my understanding of how it will need to work. However, as you've seen from the dev ML, it can be more complicated than that. | |
| 12:57:01 | efried | alex_xu_: For example, there seem to be FPGAs where, once you decide they're going to have a particular function on them, they can no longer have a different one. bauzas is running into the same thing for his VGPUs. | |
| 12:57:58 | bauzas | right | |
| 12:59:23 | alex_xu_ | efried: bauzas yes, that is why i also think about we only support pre-programmed mode for the multi functions device | |
| 13:00:04 | alex_xu_ | and same type in the all the functions in a device | |
| 13:00:21 | alex_xu_ | if we want to support different function, we can create multiple RP for different type | |
| 13:00:53 | efried | alex_xu_: Based on a config file or a user command. You're essentially talking about preconfiguring the physical function and locking down what virtual functions it's capable of. | |
| 13:01:11 | efried | Which I think is probably an acceptable interim solution. | |
| 13:01:21 | alex_xu_ | efried: yea | |
| 13:01:22 | efried | Though ultimately it would be nice to be dynamic | |
| 13:01:36 | alex_xu_ | yes, at least for now, that is what we can have | |
| 13:02:14 | alex_xu_ | efried: bauzas another problem is cyborg want to own some inventory info in his db and has filter to second level scheduling | |
| 13:02:59 | alex_xu_ | in cyborg db, the usage of functions and the fuction is record | |
| 13:03:07 | alex_xu_ | s/fuction/function type/ | |
| 13:03:29 | alex_xu_ | for the usage of functions, that can be resolved by function as resource class | |
| 13:03:37 | alex_xu_ | for the function type we can use trait | |
| 13:04:11 | alex_xu_ | and I'm thinking tag the traits after cyborg burn bitstream to the fpga | |
| 13:04:26 | alex_xu_ | that is only support for single function device | |
| 13:08:54 | efried | alex_xu_: If we're doing that via a "preconfigure" step, I can see it being acceptable. What I'm worried about jaypipes and dansmith having a cow about is if we do it e.g. based on the first time an allocation is made against the device. | |
| 13:10:06 | alex_xu_ | efried: for single function device, we will have RP for the device, the inventory is always 1 | |
| 13:10:54 | alex_xu_ | that is different with GPU case | |
| 13:12:39 | cdent | just a heads up to anyone listening; I'm pretty sure that the move of the placement related db tests into the placement hierarchy has tweaked something with the management of trait syncing, such that sometimes (only sometimes) a databsase reset is happening but the reset of the trait sync flag is not happening | |
| 13:12:46 | openstackgerrit | Matthew Edmonds proposed openstack/nova master: PowerVM Driver: Network interface attach/detach https://review.openstack.org/546813 | |
| 13:12:49 | cdent | I'm fixing it (and will make bug etc) | |
| 13:13:03 | mriedem | cdent: thanks | |
| 13:15:19 | efried | edmondsw: Thanks for fixing that up. | |
| 13:15:21 | alex_xu_ | efried: are you saying the race case for the GPU tweak trait in the fly, just as you said in the ML. I see that case. But we won't have problem for the RP always has only 1 inventory | |
| 13:15:38 | edmondsw | efried np | |
| 13:15:43 | efried | mriedem: Sorry about that, I was in a hurry. Haste makes waist, or something. | |
| 13:16:18 | efried | alex_xu_: I don't care about the race. We can't avoid that (I'm composing an answer to Sundar on that topic). | |
| 13:16:36 | efried | alex_xu_: I don't think splitting into one RP per virtual function is going to help us. | |
| 13:16:51 | mriedem | efried: what about your size 32 waist? | |
| 13:17:17 | efried | mriedem: I haven't been a 32 since college. Probably because of haste. | |
| 13:17:26 | edleafe | alex_xu_: efried: I think that this is similar to the discussion about NUMA configuration | |
| 13:17:29 | alex_xu_ | efried: you mean you don't care the reason of two level scheduling. or you mean you don't care the race for tweak inventory/traits in the fly? | |
| 13:17:32 | efried | edleafe: Yes it is. | |
| 13:17:46 | alex_xu_ | I think sundar mix that two race in single email | |
| 13:17:49 | edleafe | IOW, decide what it will be, and set inventory appropriately | |
| 13:18:01 | efried | alex_xu_: Hold on, let me send this note, it summarizes my position. | |
| 13:18:27 | edleafe | If an FPGA can never change its functions, then the resource class is the function. The device is not inventory, it's an RP | |
| 13:18:33 | efried | edleafe: Right, decide up front how you're going to allow it to be configured. Which is limiting, but much simplifying. | |
| 13:18:38 | alex_xu_ | edleafe: right | |
| 13:18:51 | edleafe | Same as with NUMA - limiting but simplifying | |
| 13:19:12 | edleafe | If we don't set limits, we'll be back in the "nova will take care of everything for you" business | |
| 13:19:40 | edleafe | We'll spend 90% of our effort on the 5% use cases | |
| 13:19:58 | alex_xu_ | I totally agree with that. actually I'm saying another race which is due to Cyborg will do second-level scheduling... | |
| 13:20:29 | alex_xu_ | oops, maybe I didn't say clear | |
| 13:21:23 | alex_xu_ | efried: actually I want to attach trait as function type is for re-use previously burn function | |
| 13:21:47 | alex_xu_ | and for the device only support single function | |
| 13:22:11 | edleafe | alex_xu_: you mean trait like CUSTOM_CAN_RUN_FUNCTION_X ? | |
| 13:22:27 | alex_xu_ | edleafe: yes | |
| 13:22:38 | alex_xu_ | edleafe: sorry, no | |
| 13:23:16 | alex_xu_ | just CUSTOM_FUCNTION_X, not can run, attach trait after cyborg burn the function x into the device | |
| 13:24:17 | edleafe | alex_xu_: so a request for a VM with that function comes in. How will find that device if the trait isn't present initially? | |
| 13:24:45 | alex_xu_ | edleafe: a fpga can burn any function | |
| 13:25:26 | alex_xu_ | edleafe: we only tell cyborg we need function x, please burn that into the any available device. | |
| 13:25:41 | edleafe | alex_xu_: sure, so why do we need to add the trait? | |
| 13:26:10 | alex_xu_ | edleafe: after the VM is destroy, there is use-case, we want to reuse that device which already burn function x, so that is why I want to attach that trait. | |
| 13:26:41 | edleafe | alex_xu_: Cyborg is supposed to keep track of that - not placement | |
| 13:26:54 | edleafe | that's what they want to do with a weigher | |
| 13:27:13 | edleafe | prefer hosts that already have that function available | |
| 13:27:26 | alex_xu_ | edleafe: cyborg is responsible for attach trait to the fpga RP | |
| 13:27:55 | alex_xu_ | edleafe: and that need 'preferred trait' which we don't have today... | |
| 13:28:03 | edleafe | ...which is a weigher | |
| 13:28:17 | alex_xu_ | yes | |
| 13:29:01 | dansmith | efried: you needn't corral all of my future reactions into "have a cow" territory just because there have been a few significant disagreements lately | |
| 13:29:09 | edleafe | it would be much cleaner to not have them mess with these traits, and just have the weigher make a call to Cyborg to prefer those hosts that have the function available | |
| 13:29:22 | dansmith | I don't birth bovine for pleasure | |
| 13:29:25 | efried | dansmith: It's not that, it's about previously-had cows on this exact topic. | |
| 13:30:33 | alex_xu_ | jaypipes said he is ok to have a 'preferred trait' in flavor extra, and has a nova scheduler weigher to weigh the traits. not a weigher inside placement | |
| 13:30:46 | efried | alex_xu_, edleafe: Right, but jaypipes and dansmith have had a pretty firm stance from the start that we can't do traits like THIS_FPGA_HAS_FUNCTION_A_ON_IT_RIGHT_NOW. | |
| 13:31:06 | efried | Even when we're talking about "preferred" traits. | |
| 13:31:06 | edleafe | efried: ++ | |
| 13:31:21 | edleafe | that's why all that logic needs to be in Cyborg | |
| 13:31:21 | alex_xu_ | efried, why? | |
| 13:31:42 | alex_xu_ | sorry for asking people repeat the thing people already said in PTG... | |
| 13:31:53 | efried | alex_xu_: The statement is that "traits are capability, not state". | |
| 13:32:02 | efried | alex_xu_: TBH, I've never understood the "why" of that. | |
| 13:32:26 | dansmith | efried: I'm not sure I've taken a hard stance against that, but let me say: | |
| 13:32:30 | alex_xu_ | dansmith: ^ :) | |
| 13:32:50 | dansmith | flipping a trait at high speed to indicate something like "cpu load appears low right now" | |
| 13:32:55 | dansmith | seems like a really bad idea to me | |
| 13:32:56 | dansmith | however, | |
| 13:33:16 | dansmith | if cyborg is managing resources, and it decides when to remove a function from a device, like a cache manager kind of thing, | |
| 13:33:37 | dansmith | I can see it committing a resource (so it knows it's claimed/committed) and then leaving a trait on it, | |
| 13:34:03 | dansmith | and then deciding six hours after the last instance is gone that "okay, this should go back to generic empty" or something like that | |
| 13:34:15 | dansmith | it's not great, and it could certainly be abused past my tolerance level, | |
| 13:34:26 | dansmith | but I'm not sure it's the worst thing | |
| 13:34:42 | dansmith | now, I don't think jaypipes agrees with me there, but.. | |
| 13:35:04 | jaypipes | dansmith: I do. | |
| 13:35:08 | cdent | people are going to "abuse" traits no matter what anyone says, so there's a part of me that thinks we should let it happen | |