14:00:17 <zhipeng> #startmeeting openstack-cyborg
14:00:21 <openstack> Meeting started Wed Mar 21 14:00:17 2018 UTC and is due to finish in 60 minutes.  The chair is zhipeng. Information about MeetBot at http://wiki.debian.org/MeetBot.
14:00:22 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
14:00:25 <openstack> The meeting name has been set to 'openstack_cyborg'
14:00:41 <zhipeng> #topic Roll Call
14:00:49 <zhipeng> #info Howard
14:01:11 <shaohe_feng_> hi zhipeng
14:01:18 <kosamara> hi!
14:01:23 <zhipeng> hi guys
14:01:33 <crushil> \o
14:01:35 <zhipeng> please use #info to record you names
14:01:48 <kosamara> #info Konstantinos
14:01:50 <Sundar> #info Sundar
14:02:15 <crushil> #info Rushil
14:02:57 <shaohe_feng_> #info shaohe
14:05:02 <Sundar> Do we have a Zoom link?
14:05:06 <zhipeng> let's wait for a few more minutes in case more people will join
14:05:14 <zhipeng> Sundar no we only have irc today
14:05:23 <Sundar> Sure, Zhipeng. Thanks
14:06:18 <Yumeng__> #info Yumeng__
14:09:45 <zhipeng> okey let's start
14:09:57 <zhipeng> #topic CERN GPU use case introduction
14:10:08 <zhipeng> kosamara plz takes us away
14:10:41 <kosamara> I joined you recently, so let me remind that I'm a technical student at CERN, integrating GPUs into our openstack.
14:10:56 <kosamara> Our use case is computation only at this point.
14:11:31 <kosamara> We have implemented and are currently testing a nova-only pci-passthrough.
14:12:18 <kosamara> We intend to also explore vGPUs, but they don't seem to fit our use case very much: licensing costs, limited CUDA support (nvidia case both).
14:12:47 <kosamara> At the moment the big issues are enforcing quotas on GPUs and security concerns.
14:13:07 <kosamara> 1. Subsequent users can potentially access data on the GPU memory
14:13:39 <kosamara> 2. Low-level access means they could change the firmware or even cause the host to restart
14:14:23 <kosamara> We are looking at a way to mitigate at least the first issue, by performing some kind of cleanup on the GPU after use
14:14:55 <kosamara> But in our current workflow this would require a change in nova.
14:15:13 <kosamara> It looks like something that could be done in cyborg?
14:15:42 <zhipeng> i think so, i remember we had similar convo regarding clean up on FPGA in the PTG
14:15:43 <Li_Liu> are you try to force a "reset" after usage of the device?
14:16:02 <kosamara> Reset of the device?
14:16:32 <kosamara> According to a research article, in nvidia's case performing a device reset through nvidia-smi is not enough for the data leaks.
14:16:42 <Li_Liu> something like that. like Zhipeng said, "clean up"
14:16:49 <kosamara> - article: https://www.semanticscholar.org/paper/Confidentiality-Issues-on-a-GPU-in-a-Virtualized-E-Maurice-Neumann/693a8b56a9e961052702ff088131eb553e88d9ae
14:17:19 <kosamara> The additional complexity in pci passthrough is that the host can't access the GPUs (no drivers)
14:17:39 <shaohe_feng_> so once the GPU devices are detached, cyborg should do clean up at once.
14:17:40 <Sundar> What kind of clean up do you have in mind? Zero out the RAM?
14:18:15 <kosamara> My thinking is to put the relevant resources in a special state after deallocation from their previous VM and use a service VM to perform the cleanup ops themselves.
14:18:21 <Li_Liu> memset() to zero for all ?
14:18:27 <kosamara> Yes, zero the ram
14:19:00 <kosamara> But ideally we would like to ensure the firmware's state is valid too.
14:19:13 <shaohe_feng_> only this one method to clear up?
14:19:48 <kosamara> Sorry, I'm out of context. This method is from where?
14:19:58 <shaohe_feng_> zero the ram
14:20:15 <kosamara> Yes for the ram.
14:20:30 <shaohe_feng_> OK, got it.
14:20:35 <kosamara> But we would also like to check the firmware's state.
14:20:54 <kosamara> And at least ensure that it hasn't been tampered with.
14:21:22 <shaohe_feng_> so no ways to power off the GPU device, and re-power it?
14:21:23 <zhipeng> i think this is doable with cyborg
14:21:43 <kosamara> Not that I know of, apart from rebooting the host.
14:21:44 <zhipeng> shaohe_feng_ that will mess up the state ?
14:21:59 <Sundar> The service VM needs to run in every compute node, and it needs to have all the right drivers for various GPU devices. We need to see how practical that is.
14:22:14 <Li_Liu> we might need to get some help from Nvidia
14:22:48 <zhipeng> let's say we have the NVIDIA driver support
14:22:50 <Sundar> In a vGPU scenario, how do you power off the device without affecting other users?
14:22:52 <zhipeng> for cyborg
14:22:59 <kosamara> Sundar: unless vfio is capable of doing these basic operations?
14:23:39 <zhipeng> do we still need the service VM ?
14:24:11 <kosamara> I haven't explored practically nvidia's vGPU scenario. The host is supposed to be able to operate on the GPU in that case.
14:24:32 <Sundar> kosamara: Not sure I understand. vfio is a generic module for allowing device access. How would it know about specific nvidia devices?
14:24:44 <shaohe_feng_> kosamara: do you use vfio pci passthrough or pci-stub passthrough?
14:25:08 <kosamara> zhipeng: vfio-pci is the host stub driver when the gpu is passed through. If we could do something through that, then we wouldn't need the service VM.
14:25:32 <kosamara> shaohe_feng_: vfio-pci
14:25:37 <zhipeng> kosamara good to know
14:26:16 <kosamara> Sundar: yes, I'm just making a hypothesis. I expect it can't, but perhaps zeroing-out the ram is a general enough operation and it can do it...?
14:27:40 <Vipparthy> hi
14:27:49 <shaohe_feng_> kosamara:  is zeroing-out the ram time consuming?
14:28:20 <Sundar> kosamara: I am not a Nvidia expert. But presumably, to access the RAM, one would need to look at the PCI BAR space and find the base address or something? If so, that would be device-specific
14:29:49 <kosamara> Sundar: thanks for the input. I can research the feasibility of this option this week.
14:30:15 <zhipeng> kosamara I will also talk to the NVIDIA OpenStack team about it
14:30:26 <zhipeng> see if we could come out with something for Rocky :)
14:30:45 <kosamara> shaohe_feng_: I don't have a number right now. It should depend on the manner: if it happens on the device without pci transports it should be quite fast.
14:31:08 <kosamara> zhipeng thanks :)
14:32:01 <zhipeng> kosamara is there anything like an architecture diagram for the use case ?
14:32:20 <kosamara> Not really.
14:32:32 <zhipeng> okey :)
14:33:00 <Sundar> kosamara: you also mentioned quotas on GPUs?
14:33:03 <kosamara> What exactly do you mean by architecture diagram?
14:33:09 <Li_Liu> this rings a bell to me about the driver apis
14:33:20 <zhipeng> kosarama like the overall setup
14:33:33 <Li_Liu> currently we have report() and program() for the vendor driver api
14:33:50 <kosamara> Yes. We currently implement quotas indirectly. We only allow GPU flavors on specific projects and quota them by cpu.
14:33:58 <Li_Liu> we might want to consider a reset() api for the drivers
14:34:09 <zhipeng> Li_Liu makes sense
14:34:21 <zhipeng> kosamara we will also have quota support for Rocky
14:34:22 <shaohe_feng_> +1
14:35:13 <kosamara> Good to know.
14:35:28 <zhipeng> okey folks let's move on to the next topic
14:35:36 <zhipeng> thx again kosamara
14:35:40 <kosamara> thanks!
14:35:47 <shaohe_feng_> kosamara: so do you not support GPU quota  for specific projects?
14:35:56 <zhipeng> #topic subteam lead report
14:36:04 <kosamara> No, we do it indirectly, in the way I mentioned.
14:36:24 <zhipeng> shaohe_feng_ scrow up :)
14:36:39 <zhipeng> scroll
14:37:02 <zhipeng> okey yumeng could you introduce the progress on your side ?
14:37:43 <zhipeng> Yumeng__
14:39:24 <Yumeng__> Last week I set up a repository for cyborg-specs
14:40:24 <Yumeng__> some patches are still waiting for review from the infra team
14:40:49 <Yumeng__> Hope it could be merged ASAP
14:40:55 <Sundar> Are we not using the git repo's doc/specs/ area anymore?
14:41:14 <zhipeng> Sundar we are migrating it out :)
14:41:22 <Sundar> Maybe I am missing the context. What is this repository for specs?
14:41:27 <zhipeng> but it is fine now to keep submit to that folder
14:41:46 <zhipeng> we will migrate all the approved specs after MS1 to cyborg-specs
14:42:11 <Sundar> Howard, could you explain why we are doing that?
14:42:36 <zhipeng> It would be better for the documentation when we do release
14:42:47 <zhipeng> all the core projects are doing it
14:43:33 <zhipeng> i think yumeng also add the gate check on docs for cyborg-specs
14:44:13 <crushil> Sundar All the core projects split out the specs and the main project. So, it makes sense to follow suite
14:44:31 <zhipeng> yes exactly
14:44:35 <Sundar> IIUC, in the git repo, approved specs will be doc/specs/<release>/approved, but in the new repo, all release specs will be in one place. Is that right?
14:45:03 <zhipeng> it will still follows the similar directory structure
14:45:36 <Sundar> OK, so we are just separating code from docs
14:45:41 <zhipeng> yes
14:45:48 <zhipeng> from specs to be preceise
14:45:50 <zhipeng> precise
14:45:57 <Sundar> Got it, thanks :)
14:46:08 <zhipeng> since general documentation is still in cyborg repo, if I understand correctly
14:46:09 <Li_Liu> for now we still check in the docs to the code repo right?
14:46:19 <zhipeng> Li_Liu yes, nothing changes
14:46:24 <Li_Liu> ok
14:46:40 <zhipeng> thx to Yumeng__ for the quick progress
14:46:56 <Sundar> In future releases, would we check specs into code repo, and have it be migrated after approval?
14:47:04 <Yumeng__> zhipeng: :)
14:47:21 <zhipeng> in the future we will just submit the spec patch to cyborg-specs
14:47:37 <Sundar> ok
14:47:56 <zhipeng> shaohe_feng_ any update on the python-cyborgclient ?
14:48:03 <shaohe_feng_> the spec and code will separated
14:48:41 <shaohe_feng_> zhipeng:  jinghan has some personal staff these days. So no more update.
14:48:58 <shaohe_feng_> zhipeng: I will help him on it.
14:49:18 <zhipeng> thx :) was just gonna mention this
14:49:24 <zhipeng> plz work with him
14:49:29 <shaohe_feng_> hopeful we will make progress next week.
14:49:30 <shaohe_feng_> OK
14:49:36 <zhipeng> ok thx
14:49:49 <zhipeng> I will work with zhuli on the os-acc
14:50:10 <zhipeng> that one will most likely involve nova team discussion
14:50:54 <Sundar> Yes. I will be happy to work with zhuli if he needs any help
14:51:14 <zhipeng> Sundar gr8t :)
14:51:26 <zhipeng> #topic rocky spec/patch discussion
14:51:52 <zhipeng> #link https://review.openstack.org/#/q/status:open+project:openstack/cyborg
14:52:37 <zhipeng> first up, Sundar's spec patch
14:53:13 <shaohe_feng_> Sundar: good work
14:53:28 <Sundar> Shaohe, thanks :)
14:53:28 <shaohe_feng_> but I have a question. why nova developer think the accelerator weigher call cause performance loss
14:53:39 <zhipeng> #link https://review.openstack.org/#/c/554717/
14:53:59 <Sundar> I think the assumption was that the weigher will call into Cyborg REST API for each host
14:54:09 <Sundar> If the weigher is in Nova tree, that is true
14:54:25 <Sundar> But, if Cyborg keeps it, we have other options
14:54:27 <shaohe_feng_> Sundar: why for each host?
14:54:51 <Sundar> The typical filter today operates per host
14:54:52 <shaohe_feng_> Sundar: I have discussed it before.
14:55:18 <shaohe_feng_> Sundar: the cyborg API will run on controller node.
14:55:32 <shaohe_feng_> Sundar: we only call the api in controller node.
14:55:39 <shaohe_feng_> just on api is OK.
14:56:13 <shaohe_feng_> for example, the scheduler filter choose the suitable hosts
14:56:56 <shaohe_feng_> and the scheduler weigher just call a API to query the accelerator infos of these hosts
14:57:05 <shaohe_feng_> zhipeng: Li_Liu: right?
14:57:36 <zhipeng> that is still , per host
14:57:36 <Li_Liu> you mean the weigher is on the Cyborg controller side?
14:57:56 <shaohe_feng_> zhipeng: no, we get list for filter API
14:58:32 <Sundar> Shaohe, yes, we could override the BaseWeigher and handle multiple hosts in one call. That call could invoke Cyborg REST API.
14:58:44 <shaohe_feng_> for example: GET /cyborg/v1/accelerators?hosts=cyborg-1,cyborg-2&type=fpga
14:58:45 <Sundar> To me, it is not clear what the performance hit would be.
14:59:26 <Sundar> I suspect any performance hit would not be noticeable until we get to some scale
14:59:28 <Li_Liu> Does this involve the 2-stages scheduling problem we were trying to avoid?
15:00:10 <Sundar> There is no 2-stage scheduling here: the proposed filter/weigher is a typical one, which just filters hosts based on function calls.
15:00:26 <shaohe_feng_> Sundar: yes, the scheduler has call placement several times, is there performance issue?
15:00:29 <zhipeng> Sundar I think Li_Liu meant for weigher in Nova
15:00:52 <zhipeng> shaohe_feng_ it is not the same thing
15:01:13 <shaohe_feng_> they are both http request.
15:01:18 <zhipeng> anyways this has been discussed in extent with Nova team and let's stay with the conclusion
15:01:24 <Li_Liu> ok
15:01:30 <zhipeng> shaohe_feng_ we could discuss offline more with Alex
15:01:31 <shaohe_feng_> OK
15:01:38 <zhipeng> but let's not dwell on it
15:01:51 <Sundar> May be I misunderstood :) We are proposing a weigher maintained in Cyborg tree, which the operator will configure in nova.conf. Is that a concern?
15:02:34 <shaohe_feng_> weigher maintained in Cyborg tree, still need one cyborg api request,  so also performance issue?
15:03:02 <zhipeng> Sundar I don't think that would be a concern
15:03:06 <Sundar> shaohe: I personally don't think so, but we'll check the data to assure everybody
15:03:24 <shaohe_feng_> zhipeng: Li_Liu:  do you think  a weigher maintained in Cyborg tree is a good idea?
15:03:47 <zhipeng> yes, at the moment
15:04:09 <shaohe_feng_> Sundar: you still need to tell cyborg which hosts need to weight
15:04:22 <shaohe_feng_> on cyborg api call.
15:04:22 <Sundar> shaohe: This weigher is querying Cyborg DB. It is better to keep it in Cyborg
15:04:39 <Li_Liu> I agree with zhipeng
15:04:57 <zhipeng> the weigher will just talk to the conductor
15:05:02 <zhipeng> it is not blocking nova operations
15:05:06 <zhipeng> that is the point
15:05:59 <shaohe_feng_> any the way, the api call will talk to conductor to query Cyborg DB
15:06:06 <Sundar> Shaohe, yes. The weigher gets a list of hosts. We could either introduce a new Cyborg API for that, or just have the weigher query the db directly
15:06:09 <shaohe_feng_> no difference.
15:06:23 <zhipeng> shaohe_feng_ let's leave it offline
15:06:29 <shaohe_feng_> zhipeng: OK.
15:06:46 <zhipeng> Sundar thx for the spec :)
15:06:57 <zhipeng> We will definitely review it more
15:07:51 <zhipeng> next up, Li Liu's patch
15:08:05 <zhipeng> #info Implemented the Objects and APIs for vf/pf
15:08:19 <zhipeng> #link https://review.openstack.org/552734
15:08:59 <Sundar> Sorry, I need to leave for my next call. :( Will catch up from minutes
15:09:12 <Li_Liu> later
15:09:23 <zhipeng> Sundar no problem
15:09:40 <zhipeng> Sundar we need another discussion on k8s actions :)
15:10:11 <zhipeng> Li_Liu any update or comment on your patch ?
15:10:22 <zhipeng> things we need to be aware of ?
15:10:59 <Li_Liu> not really. I think shaohe needs to change some code in his resource tracker to adopt the change
15:11:35 <Li_Liu> other than that. one thing left over is to utilize the attribute table in deployables. This is still a missing piece
15:11:41 <shaohe_feng_> Li_Liu: thanks for reminder.
15:12:12 <Li_Liu> I will keep working on that as well as 2 other specs
15:12:49 <Li_Liu> shaohe_feng_ np. let me know if you need any help on using my pf/vfs
15:12:49 <shaohe_feng_> Li_Liu: 2 other specs include image management?
15:13:00 <shaohe_feng_> Li_Liu: ok, thanks.
15:13:23 <Li_Liu> programability and image metadata standardization
15:13:44 <zhipeng> yes , big task on your shoulder :)
15:14:05 <Li_Liu> :)
15:15:45 <zhipeng> okey we've gone through our agenda list today
15:15:54 <zhipeng> I think we can end the meeting now :)
15:16:04 <zhipeng> and talk to you guys next week
15:18:11 <kosamara> bye
15:19:05 <Yumeng__> bye
15:19:38 <zhipeng> #endmeeting