03:02:43 #startmeeting openstack-cyborg 03:02:44 Meeting started Thu Sep 19 03:02:43 2019 UTC and is due to finish in 60 minutes. The chair is Sundar. Information about MeetBot at http://wiki.debian.org/MeetBot. 03:02:45 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 03:02:47 The meeting name has been set to 'openstack_cyborg' 03:02:59 #topic Who's here 03:03:02 o/ 03:03:08 o/ 03:03:20 #info Yumeng 03:03:26 #info s_shogo 03:03:32 #info wangzhh 03:03:40 #info changzhi 03:03:49 #info chenke 03:04:00 Hi chenke, Yumeng, s_shogo, wangzhh. Welcome changzhi 03:04:03 #info shaohe_feng 03:04:10 Hi shaohe 03:04:17 #topic Status 03:04:41 First, thank you all for an active Train cycle. We have hit feature feeze a week ago 03:05:00 SO also did other projects. 03:05:41 The good news: Cyborg side of the Nova integration is pretty much done. We just need to clean up the way we invoke other services 03:06:07 Great 03:06:24 Cool 03:06:33 Not so good news: Our Nova patches did not enough reviews from Nova developers, and so did not make the cut. 03:07:24 Part of the problem is that, Cyborg patches were open for a long time, so Nova developers did not see it as ready, though we could put up a VM with Cyborg + Nova patches 03:08:16 Also, there was a longstanding request to show tempest CI working. That completed exactly in the milestone week. That was too late to get sustained reviews. 03:08:23 We know intigration is a big effort 03:08:45 Sundar: you d a lot of effort. Thanks 03:09:42 It is understandable the patch in nova be merged slowly. 03:09:51 NP, thanks Shaohe. I am optimistic about U because I think we are close. and I have re-proposed the Nova spec. This time, tempest and most things are merged. Things that attratc croos-project attention, like tempest, privsep, sdk_adapter stuff, etc. are all done or making good progress 03:10:36 Hope to get the Nova patches in the runway very early in the cycle. The more we wait, the more things get bogged down among the tons of other reviews. 03:11:28 That said, we have a few more things to wrap up in Train :) 03:12:12 First, remove the hardcoding of 'dvstack-admin'. Thanks, chenker and all for addressing that :) 03:12:47 Second, v1 API is deprecated but still supported in Train. But it is not working because we removed all v1 from devstack. I should re-enable it, I think 03:13:28 #info xinranwang 03:13:31 SHaohe's async bind, privsep, rbac are important 03:13:36 Hi all 03:14:05 I think all the pep8/flake fixes from chenker/zhurong are looking good and will probably merge this week 03:14:33 Can you all think of anything else? 03:14:44 Sundar: and please don't forget update device_profile db by conductor:https://review.opendev.org/#/c/679406/ 03:14:48 just updated 03:15:06 Sundar remain some slot for me to introduce the async jobs, so other's can easily to review it. 03:15:17 Thanks 03:15:25 and this gpu fix :https://review.opendev.org/#/c/675059/ I tested in my devstack env, it works 03:15:57 Ah yes, that too, Yumeng :) There are quite a few patches up there, including https://review.opendev.org/680953. 03:16:26 Sure, let's knock off as much as we can. Was just listing the ones critical to complete in Train 03:16:35 Merged openstack/cyborg master: P5: Fix pep8 error in cyborg/accelerator https://review.opendev.org/679175 03:16:54 shaohe_feng: Sure 03:17:15 Folks, anything else before we dive into Shaohe's async bind? 03:18:01 I'm starting test&validation task, with real machine , begin with common functions, independet from specific accelerators. 03:18:11 If extracted some bugs or erros, report that or post patches till the Train release. 03:19:36 Sure, s_shogo. I think the client effort can be aimed early in U release, since the Train release milestone for clients is past 03:19:41 I have some questions on RBAC: https://review.opendev.org/#/c/678177/ . In https://review.opendev.org/#/c/678177/3/cyborg/common/policy.py@83, should it be allow rule? ANybody can create an ARQ and thereby bind that ARQ, and so program an FPGA? 03:21:11 Sundar: OK, I'll do the client&sdk task continuously, to the U release. 03:22:26 wangzhh: What do you think? 03:22:33 should we complete v2 API in T? 03:23:09 Sundar, it should be allowed and recheck it in the method if it is a program action or not. 03:23:29 wangzhh: ok 03:23:51 xinranwang: Only devices API remains. We are supposed to merge only bug fixes, I think. So, it will probably go to U. Is anything else remaining? 03:25:30 OK, 35 min remaining. Let's move to async bind. 03:25:41 #topic Async bind 03:25:54 Shaohe, take it away! 03:26:05 Now let's we start to introduce async bind. Any questions can fafter the introduction. 03:26:12 Briefly put, bind is to find a suitable device(maybe PCI, or MDEV) on the right host for a server instance to use. 03:26:18 So what's the suitable device, we need a spec to describe it. 03:26:25 On v1 we discribe the device directly on nova flavor extra spec, and cyborg parser the spec, Xinran implement this work. 03:26:32 On v2, after the PTG discussion, we define it in cyborgs owen Device Pofile. And Sundar implement it. 03:26:43 I have no chance to attend PTG for discussion, More details please talk with Sundar. 03:26:50 Thans Xinran and Sundar's effor. 03:26:59 Before we introduce async bind, let's know some implement(rules) in the current code firstly. 03:27:08 1. The AtachHandler in ExtARQ is not a list, so only one AtachHandler(one devcie for ARQ) 03:27:08 profile group in order to get the expected devices. 03:27:19 Now Our cyborg ARQ API bind API is sync, be we define it as async, so need to improve. 03:27:28 So what we changed: 03:27:43 1. Use a thread pool to start the async job. 03:27:50 In cyborg spec, sundar suggests use concurrent, yes it is a python stand lib. See python office link: 03:27:57 https://docs.python.org/3/library/concurrent.futures.html 03:28:05 Also we can greening it by greenlet. patched it by eventlet. 03:28:11 utures = eventlet.import_patched('concurrent.futures') # 'greening' futures, 03:28:13 Merged openstack/cyborg master: P6: Fix pep8 error in cyborg/agent and cyborg/db https://review.opendev.org/679193 03:28:27 easily to greening 03:28:37 See python mail list discussion. 03:28:52 I have simply test it, it can work, but I did not test it performance, do not enable greening in the patch. 03:29:00 2. I move out the bind logical from ExtARQ object. 03:29:13 Let the ExtARQ maintain's its base function, such as its attribution's CRUD. 03:29:20 Move it to cyborg/accelerator/common/handler.py (not sure this is a good place, this is a OPEN) 03:29:30 Add a basic and general bind handle class named Accelerators. (not sure this is a good name, this is a OPEN) 03:29:37 It support the base _bind 03:29:44 https://review.opendev.org/#/c/681005/16/cyborg/accelerator/common/handler.py 03:29:54 If a new acclerators need extra opeation, can derived it and extend it if needed, such as FPGA 03:30:02 line 386 at 03:30:47 For FPGA it need to get image metadata, download image, program image and update the placement. 03:31:18 If _bind is time consume, use "wrap_job_tb" to wraper it. 03:31:30 In this wraper I add it with "is_job" and can catch every Exception/traceback during bind process, then log it. 03:31:31 Merged openstack/cyborg master: P7: Fix pep8 error in cyborg/objects and cyborg/image https://review.opendev.org/679526 03:31:32 Merged openstack/cyborg master: P8: Fix pep8 error in cyborg/tests and add post_mortem_debug.py https://review.opendev.org/679538 03:31:38 I also add a bind in the general class to start the jobs tagged with "is_job". 03:31:46 I also add a master to monitor the jobs(as sundar suggestted) 03:31:52 https://review.opendev.org/#/c/681005/16/cyborg/accelerator/common/handler.py 03:32:00 It checks the jobs status and also will get the job Exception/traceback. 03:32:28 please add a SUPPORT_RESOURCES in 03:32:41 4. I add ARQ_STATES_TRANSFORM_MATRIX to sync the status. 03:32:49 Talked with sundar and xinran, we add extra status: ARQ_DELETING and ARQ_BIND_STARTED 03:32:57 line at 29 03:33:11 I just refacor Sundar's effort. Do not change his logical, at present. So did not change any API define exposed to user. Thanks for Sundar's effort. 03:33:17 I did not test multi/batch AQRs, for example, a request for 2 FPGAs, or 1 GPU and 1 FPGA. 03:33:21 Have no really env. 03:33:50 So I think we need to merge the patch, and let more developers test it. 03:34:00 That's the different with VM management. Ironic or Cyborg sometimes need hardware, so it is difficult to manage. 03:34:39 the commit message show you how to test this patch and 03:35:17 analyze the process by log: https://review.opendev.org/#/c/681005/16//COMMIT_MSG 03:35:39 Also there's still lot of works on it. Need to improve it continuously. Let it works firstly, then improvement. 03:36:31 sorry 03:37:01 any questions? 03:37:30 shaohe_feng: Thanks for all the time and hard work 03:38:19 For testing, hope people can use the fake driver. It supports FPGA resource class. Can we get it to take the programming patch but treat it as a no-op? 03:38:36 *programming code path 03:39:19 Do you means make some mock do not really programming? 03:39:23 Yes 03:39:36 Hardware support is really than VM 03:39:51 shaohe_feng: that's really a comprehensive and deep research and very helpful introduction. 03:40:40 Yumeng thanks. hopeful it is useful. 03:40:50 Thanks, shaohe_feng : 03:41:12 shaohe_feng: thanks Shaohe for your efforts 03:41:13 Sundar let me give a method to mock it later. 03:41:18 Not everybody has hardware, as you said. But concurrent execution is not easy to test throughly. It may work in my env but fail in somebody else's. We can hopefully get more people to check it out using fake driver 03:41:30 Great, thanks 03:41:54 Yes, will give a guide for how to mock it. 03:42:26 Great jobs thanks ShaoHe. 03:42:40 Also: "Move it to cyborg/accelerator/common/handler.py". Bind is really an operation on an ExtARQ. It logically belongs with objects/ext_arq.py. If you want to split that into separate source file, that is OK. But it can be a mix-in rather than a separate object/class, IMHO 03:43:37 shaohe_feng: great! looking froward to the mock guide 03:44:12 I have check nova's object code, Then I make this change. 03:44:28 shaohe_feng, Thx for your effort. 03:44:38 Sundar any details for how to split it? 03:45:23 shaohe_feng: I found this blog useful: http://www.qtrac.eu/pyclassmulti.html 03:46:00 It considers many ways to split a Python class into different source files, and finally recommends mix-ins 03:48:43 glance it. seem it is a big change. 03:49:52 Hmmm... only the last part is the mix-in. That could be a small change. You can move your chosen methods into a separate file, put it in a mix-in, and inherit that mix-in into the ExtARQ object class 03:50:11 I can help as much as I can. 03:51:09 good, then I can write a mock evn guide for test. 03:51:35 In that article, the last section "The Definitive Version?" alone is about mix-ins 03:51:40 OK, great 03:52:34 Anything else, Shaohe? 03:52:48 no, that's all for me. 03:53:02 Thanks very much, once again. 03:53:06 #topic AoB 03:53:09 let move the patch on 03:53:20 Python IPv6 jobs: https://review.opendev.org/#/c/682517/ Please review 03:53:52 Many patches hit merge conflict after recent merges 03:54:04 it does not matter. 03:54:25 we just improve our git skill 03:54:49 other active project 03:55:18 We need one more review for https://review.opendev.org/#/c/680953/ from outside Intel. 03:55:28 conflict is very common 03:55:51 Sure 03:56:03 Train schedule: https://releases.openstack.org/train/schedule.html RC1 candidate is next week! 03:56:18 Hope to get the critical patches in by that time. 03:56:49 After that, even bug fixes are not assured 03:57:48 BTW, Cyborg will get packaged as a RPM as part of OpenStack release: https://opendev.org/openstack/rpm-packaging/src/branch/master/openstack/cyborg 03:58:19 Anything else, guys? 03:58:28 no 03:58:32 no 03:58:52 Have a good day! Bye 03:58:56 #endmeeting