Earlier  
Posted Nick Remark
#openstack-cyborg - 2018-08-01
14:50:33 shaohe_feng I add a uuid/name map in yaml config.
14:51:08 shaohe_feng such as 1234:crypto, 5678:ipsec
14:51:26 shaohe_feng 1234:crypto_v1.2
14:51:56 shaohe_feng it support dynamically update.
14:52:27 shaohe_feng I also report CUSTOM_FPGA_INTEL_FUNCTION_CRYPTO_V1_2 to the placement.
14:52:38 Li_Liu shaohe_feng, you mean when the agent tries to update the traits, it has to know which ones to update?
14:52:46 Sundar "how Do I know which traits is my expect" -- If the driver reports a function attribute (it is an optional field), the agent should build a function trait. Same for region type etc.
14:54:36 shaohe_feng so a user list all traits, such as this cmd:
14:54:37 shaohe_feng -H "OpenStack-API-version: placement 1.26" |grep -oh '\w*CUSTOM*\w*'
14:54:37 shaohe_feng -H "Content-Type: application/json" -H "Accept: application/json" \
14:54:37 shaohe_feng -H "X-Auth-Token: $(openstack token issue -f value -c id)" \
14:54:37 shaohe_feng curl -g -i http://localhost/placement/traits \
14:54:50 Sundar If you are asking how would we know whether a function trait has already been reported to Placement, that is a bit of a design/implementation detail. If you think the spec should address such aspects too, sure, we can add that
14:55:12 shaohe_feng He can get both CUSTOM_FPGA_INTEL_FUNCTION_CRYPTO_V1_2 and CUSTOM_FPGA_INTEL_FUNCTION_1234
14:55:26 shaohe_feng the can any one of them.
14:56:04 shaohe_feng Sundar, I maintain this map in a config file.
14:56:17 shaohe_feng not sure we can maintain them DB.
14:56:25 efried In Dublin, for Nova, we said the user ought to be allowed to add and remove traits on providers as long as the traits aren't "owned" by Nova itself. If you wish to follow the same policy for Cyborg-owned providers, the above becomes relevant.
14:56:52 shaohe_feng Li_Liu, Sundar, what's your suggestion?
14:57:15 Li_Liu efried, can we specify Cyborg-owned providers?
14:57:36 efried that would be whatever ones cyborg is in charge of creating.
14:57:42 Sundar UUID/name maps etc. need further discussion and should be codified in specs. Who adds it and maintains it? I intentionally stayed away from such things, even if they are good to have, till the basics stabilize
14:58:27 shaohe_feng Li_Liu, very Cyborg driver will maintain a sub provider by itself.
14:58:33 efried I should note that it will be important for platform-specific drivers to have the ability to specify traits, presumably somewhere in the discovery/enumeration phase.
14:58:35 Sundar It is good to have named instead of UUIDs - but that raises lots of issues about who defines it etc
14:59:23 Sundar efried: Apart from the traits already defined in Cyborg specs, are you saying additional ad hoc traits would be needed?
14:59:51 Li_Liu my suggestion is these can be stored the attribute table. it basically contains name, value, and uuid. Then map them to placement's traits
15:01:37 efried specifically around L220 where we enumerate traits we will generate based on device info; and L163 where we define how the user will be able to specify "ad hoc" traits via config file.
15:01:37 efried #link Spec for nova-powervm device passthrough https://review.openstack.org/#/c/579359/10/doc/source/specs/rocky/device-passthrough.rst
15:01:37 efried Sundar: Yes. Have a look at
15:02:12 efried This is how we're doing things while we wait for cyborg to become a thing :) And we'll need the same capabilities when that time comes.
15:03:07 shaohe_feng Sundar, yes, so you think a good way to main the UUID/NAME map.
15:04:49 shaohe_feng 撒泼,
15:04:55 shaohe_feng spam?
15:04:59 efried yes
15:05:50 Sundar efried: We wrote Cyborg specs on traits etc. and got them approved/merged after review. It would have been good to surface these requirements during the review period.
15:06:21 efried True story.
15:06:36 efried I should have been keeping better pace with those.
15:07:01 efried My only excuse is having a lot on my plate.
15:07:20 Sundar Don't mean to pick on you -- we probably have a systemic issue here. My concern is that, if we have ad hoc list of traits defined by each driver, it can be come unmanageable. It may be better to have a standardize dlist
15:07:48 shaohe_feng efried, will you help to work on the nova side for nova/cyborg interaction?
15:08:27 Li_Liu These traits can be vendor specific. When vendor add their drivers, they should comply with the standards
15:08:29 efried Sundar: If "standardized" includes platform-specific traits specified by the platform-specific code in the driver, we can probably live with that.
15:08:56 xinran__ I agree with Li_Liu’s suggestion, and I have another question, do other devices like gpu need this kind of mapping?
15:09:09 efried For example, the traits for DRC name & index are only going to exist on Power.
15:09:16 efried shaohe_feng: Most likely, yes.
15:09:32 shaohe_feng efried, good, Thanks.
15:09:53 efried ...and by the way, those traits are going to be dynamic.
15:10:14 efried i.e. there's no way to predefine them
15:10:28 shaohe_feng ^ Sundar,
15:10:45 Sundar efried: Basic question: why does Nova/placement need to know about DRC name/index etc.? Would you want to schedule instances to use specific GPU devices, as opposed to asking for *a* GPU of a specific type?
15:11:15 efried Sundar: Yup, we at least need the *ability* to do that. Pets, not cattle.
15:11:33 shaohe_feng efried, what does hoc mean?
15:11:53 efried "ad hoc" means dynamic, non-predefined.
15:12:10 shaohe_feng on the fly?
15:12:15 efried Yes, exactly.
15:12:19 shaohe_feng got it.
15:12:30 efried I was going to use that exact phrase, but I thought throwing another idiom at you might not have worked :)
15:13:10 efried Sundar: Also, the user-specified traits will be important when we're talking about devices with "a wire out the back". E.g. SR-IOV PF connected to a specific network, *somebody* needs to be able to specify a trait indicating the network.
15:13:27 efried ...so that the user can e.g. request a VF on a particular network.
15:13:47 efried ^ use case for truly ad hoc traits even in a "cattle" environment.
15:16:25 Sundar efried and all: A process question: how can we ensure that we have got all requirements and that the next round of spec updates shall be adequate to start implementation for Stein? We had a bunch of plans for Rocky and we want to ensure they are delivered in Stein. Open to ideas!
15:16:54 efried Sundar: If you solve that one, you get a Nobel.
15:18:04 Li_Liu rofl
15:18:06 efried But the neat thing about our process is that it doesn't have to be perfect and fully-formed the first time around.
15:18:29 efried You put out *something* and then improve on it incrementally.
15:18:47 efried Surely you didn't think you were going to be done after one release.
15:18:49 Li_Liu workable -> usable
15:20:31 Sundar :) Shall we define a date before Stein's last spec approval date, by which time we can review and approve the needed Cyborg specs, and get started on implementation after that?
15:21:23 Sundar If any stakeholder wants an update after that, we can address that in T release
15:22:14 Sundar Oct 22-26 is Stein Milestone 1.
15:22:24 Sundar That is 3 months away
15:22:51 Sundar I suspect we can get the specs done in 1 month if we put our collective minds to it. Comments?
15:23:56 efried Just to level set, a statement like ^ is true in isolation, but you can't guarantee that all the stakeholders will have the time to dedicate to it to make that timeline feasible.
15:24:09 efried That said, I will do what I can to carve out the time.
15:24:52 Sundar Thanks, Eric.
15:25:35 Sundar To elaborate, if we wait until Oct end, we get very little time for implementation given that Dec and 1st half Jan are usually in holiday mode
15:26:12 Sundar Anyways, I'll take an AR to read the spec you mentioned, and update the specs on traits etc.
15:26:30 xinran__ So did we have a solution about how to map function uuid to name, or other things like that?
15:27:16 Sundar On UUID/name maps, whether that should come from the bitstream developer or the operator is an open question. The UUID itself comes the bitstream developer
15:28:01 Sundar If the driver is going to define traits, that is another wrinkle because the driver comes from the device vendor, which is yet another role
15:28:50 Sundar So, we need to have some input on how people use this in practice -- feedback needed from operators, bitstream developers etc.
15:29:39 Sundar I think this needs to be solved -- we should go to names, but any premature move before people understand and use Cyborg may require fixing later -- and that can be messy with upgrade issues wtc
15:32:21 Sundar Can we stick to UUIDs for now, and take up the name translation in subsequent discussion? That is the lowest common denominator anyway.
15:33:40 efried sorry, uuids/names for what specifically?
15:33:41 xinran__ Is it possible to translate the uuid to name in cyborg according to the data structure got by driver?
15:33:48 Li_Liu sure, that requires less modifications in the future I think
15:35:07 Li_Liu xinran__, those uuid are reported by drivers, Cyborg needs to track them
15:35:11 Sundar Xinran: as I explained, we have to ask should define function names. The driver comes from a device vendor (like Intel/Xilinx) -- they may not know anything about a specific function developed by a third party
15:35:14 Li_Liu Sundar, am i right?
15:36:08 Sundar Li_Liu: the UUIDs are reported by drivers, based on what they discover from the device itself.
15:36:20 Sundar However, where does the name came from?
15:36:38 xinran__ Yes that’s the problem
15:36:54 Li_Liu I believe name should also reported by driver
15:37:31 Li_Liu driver should know the name, and report them to Cyborg
15:37:47 Sundar There are two options: have the bitstream developer define an optional name (the current metadata spec already provides for it), or have the cloud operator define a UUID/name map like Shaohe mentioned
15:37:52 xinran__ How does driver know the name?
15:37:56 Sundar Both have their pros and cons.
15:39:27 Sundar The driver does not know any function names in the general case. If the driver itself is involved in programming a bitstream and the bitstream metadata has a name, well and good. But, the device may be pre-programmed or the bitstream many not have that metadata
15:39:44 Li_Liu driver gets the name from either: 1. device information read from hardware. 2. When loading a bitstream, driver can decode the name from the image file

Earlier   Later