Earlier  
Posted Nick Remark
#openstack-nova - 2022-06-14
09:35:44 gibi do you have the PGPU RP in the tree of in_tree=adbdb144-d84b-4b80-b03b-a0bc520d91ba ?
09:36:29 gibi so you requests two vgpus from two different pGPUs (isolate)
09:36:42 gibi I mean one vgpu from each pgpu
09:37:53 gibi that should work if you have to pGPU RPs
09:39:04 gibi could you paste the output of https://github.com/gibizer/osc-placement-tree ? (or publish the test you are running so I can reproduce it?)
09:41:33 bauzas sorry was doing other thing
09:42:10 bauzas gibi: I can install it in the func venv
09:42:37 bauzas oh, you said it in the README :)
09:42:45 bauzas lemme pip it
09:48:11 bauzas gibi: I need to disappear for gym reasons but I'll work on it this afternoon
09:48:29 bauzas I just installed, I just need to add the placement api module in my test class
09:48:39 gibi bauzas: have a nice workout. feel free to ping me later
09:51:18 bauzas gibi: <3
09:51:21 bauzas gibi: found my problem
09:51:30 bauzas I was only having one child RP
09:51:50 gibi ack, good to hear that
09:55:14 gibi bauzas, sean-k-mooney: an interesting performance bug https://bugs.launchpad.net/nova/+bug/1978372
09:59:49 sean-k-mooney first tought is they dont know how to use the hw:numa_* extra specs
10:00:38 sean-k-mooney its very bad pratcit to use hw:numa_cpus or hw:numa_mem with symetric numa toplogies
10:00:46 sean-k-mooney its explictly an anti pattern
10:00:59 sean-k-mooney and should not be doen
10:01:38 sean-k-mooney it wont affect the perfrmace but the also mis understand the relation ship betweeh hw:cpu_threads and hw:cpu_max_threads
10:01:52 sean-k-mooney if hw:cpu_treads is specifed then max is ignored
10:02:03 sean-k-mooney sam for sockets
10:02:32 sean-k-mooney so that flavor defintion annoys me on a fundimental level :)
10:03:45 sean-k-mooney gibi: hoststly im not that suprised we know that this is a very slow algorthim
10:03:50 gibi then look at the minimal reproduction that has no falvor :)
10:04:17 sean-k-mooney i did some experiments a few year ago repimlementing it form scratch
10:04:39 sean-k-mooney but the reason i did not continue with that was we were going to implement numa in placement any day now
10:04:55 gibi also we are emitting 18G debug logs during that run which is pretty extreme
10:05:35 sean-k-mooney peopel complaied there was not enough logging in the hardware module :P
10:06:06 sean-k-mooney https://github.com/SeanMooney/cpu-pinning
10:06:13 sean-k-mooney this was my experimal approch
10:08:31 gibi as far as I understand this call does not call out to any extrnal system (no fs, db, rabbit calls) so it runs in pure python. So taking minutes indicate that we are doing something crazy
10:10:59 sean-k-mooney we are try to validate cpu (floating and pinned),ram ,pci, and pmem affinity based on the rules set in teh falvor with regards to thread affintiy, device affintiy and any semetic or asmetirc numa requirements
10:16:32 sean-k-mooney gibi: by the way we have know about this basically from the start that its qudratic or wrose as you scale the number of host/guest numa nodes
10:16:50 sean-k-mooney its why the numa toploty filter shoudl always be last in your filter list if you enable it
10:19:28 sean-k-mooney i am not sure if ic an repodcue that simpel example in my ohter implemntaion but im going to give it a try quickly
10:28:30 sean-k-mooney [11:27:50]❯ ./run.sh
10:28:32 sean-k-mooney Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.
10:28:34 sean-k-mooney
10:28:36 sean-k-mooney 0:0,1:32,2:512,3:544
10:28:38 sean-k-mooney 0:1,1:2,2:3,3:4
10:28:40 sean-k-mooney 0:5,1:69,2:133,3:197
10:28:42 sean-k-mooney 0:33,1:513,2:34,3:514,4:35,5:515,6:36,7:6
10:28:44 sean-k-mooney 0:2047,1:1983,2:1919,3:1855,4:2015,5:1951,6:1887,7:1823
10:28:46 sean-k-mooney bug repoducer
10:28:48 sean-k-mooney ----------------------------------------
10:28:50 sean-k-mooney 0:0,1:3,2:6,3:9,4:12,5:15,6:18,7:21,8:48,9:51,10:54,11:57,12:60,13:63,14:66,15:69,16:1,17:4,18:7,19:10,20:13,21:16,22:19,23:22,24:49,25:52,26:55,27:58,28:61,29:64,30:67,31:70,32:2,33:5,34:8,35:11,36:14,37:17,38:20,39:23,40:50,41:53,42:56,43:59,44:62,45:65,46:68,47:71
10:28:52 sean-k-mooney real 0m1.004s
10:28:54 sean-k-mooney user 0m0.893s
10:28:56 sean-k-mooney sys 0m0.094s
10:28:58 sean-k-mooney gibi: is ^ better
10:29:18 sean-k-mooney or
10:29:20 sean-k-mooney real 0m0.986s
10:29:22 sean-k-mooney user 0m0.887s
10:29:24 sean-k-mooney sys 0m0.078s
10:29:26 sean-k-mooney if i jus trun the repoducer
10:32:24 gibi the reproducer took 6 mins to run on my laptop
10:32:36 gibi so yours seems to be a loooot faster
10:34:17 sean-k-mooney https://github.com/SeanMooney/cpu-pinning/commit/018a1d0a9abeeec40d3e3ccbfd640363158433c5
10:34:28 sean-k-mooney that is the same case right
10:35:07 sean-k-mooney 1 socket 16 numa nodes and 48 cores with 2 thread pre cpu for 96 theads
10:35:29 sean-k-mooney then booth a 48 core cpu with pinning and the prefer thread polciy with 1G hugepages
10:35:42 sean-k-mooney and 488GB of ram
10:35:42 gibi there are some usage too in the reproducer
10:36:32 gibi the first 7 host numa cell is used
10:36:55 sean-k-mooney ack i can add that and see if it makes any differnce
10:50:50 sean-k-mooney basically the same
10:50:52 sean-k-mooney real 0m1.074s
10:50:54 sean-k-mooney user 0m0.936s
10:50:56 sean-k-mooney sys 0m0.115s
10:51:30 sean-k-mooney https://github.com/SeanMooney/cpu-pinning/blob/master/pinning.py#L378-L415=
10:52:25 sean-k-mooney the issue with my alternitiv implemntation is it only supprots hugepages and cpu pinning
10:52:36 sean-k-mooney it is missing pci supprot and mixed cpu support
10:53:48 sean-k-mooney ill run there repodcuer to have a comparison on the same hardware
10:59:21 sean-k-mooney im going to make coffee whiel this runs...
11:03:42 gibi dansmith, bauzas: what do you think do we want to / can do something about this? https://bugs.launchpad.net/nova/+bug/1978549 It feels like a bug but I'm not sure I want to go back and add a db migration to stein in nova or touch the placement db init script. https://bugs.launchpad.net/nova/+bug/1978549
11:06:20 sean-k-mooney gibi: dont we tend to not drop the columes right away
11:06:29 sean-k-mooney to cater for rolling upgrades
11:06:48 gibi sure
11:06:52 sean-k-mooney we stop the usage and then a few release later we can drop the column
11:07:01 gibi but then we suddenly forget to add it to the placement db init script
11:07:27 gibi so if you have a DB that was created before placemetn was moved out of nova repor then you have can_host
11:07:35 sean-k-mooney well that woudl only be an issue if you were initing on a version that used it right
11:08:23 gibi we removed the can_host column but without a DB migration
11:08:38 gibi the removal happen when the new db init was created for the moved out placement
11:08:46 sean-k-mooney i see
11:10:18 sean-k-mooney gibi: real 12m32.814s
11:10:38 sean-k-mooney maybe my 4 year old laptop is starting to show its age
11:11:55 sean-k-mooney gibi: we could just document this as a workaround for the db issue
11:12:27 sean-k-mooney the fix is only requried if movign form in nova to out of tree placement right
11:12:40 sean-k-mooney if you are doign a db restore
11:12:48 sean-k-mooney and even then only if you are migrating db backends
11:13:16 sean-k-mooney if you were just doing a db export and import in mysql it would be fien because the improt would create the tabels
11:13:46 sean-k-mooney in there case they likely are just migrating the data and using placemnt-mange to init an empty db
11:16:08 gibi I agree to only document the workaround. I'm not sure where to put that documentation though. As adding a reno now in zed in placement for an issue introduced in stein in nova does not feels right
11:16:49 sean-k-mooney we can do a stable only reno
11:16:59 sean-k-mooney on stine
11:17:48 sean-k-mooney or update the existing one for speliting out placment which i assuem exists somewhere

Earlier   Later