Earlier  
Posted Nick Remark
#openstack-nova - 2020-01-29
17:19:31 sean-k-mooney but we cant explctly request 1G or 2mb pages in that case
17:19:31 efried no, 'large' isn't a thing.
17:19:31 stephenfin it's anything bigger than 4k
17:19:39 sean-k-mooney efried: yes it is
17:19:43 stephenfin which could be 1G on half the compute nodes
17:19:57 sean-k-mooney hw:mem_page_size=large is the recommend way to enable hugepages
17:20:02 efried wait, so there are flavors that care how many pages they get, but not how much memory that ends up being????
17:20:16 sean-k-mooney yes
17:20:20 stephenfin no
17:20:23 sean-k-mooney well not pages
17:20:26 sean-k-mooney but page size
17:20:37 stephenfin they care about how much memory they get but not the exact size of the pages
17:20:42 stephenfin just so long as it's != 4k
17:20:58 stephenfin 2M, 1G, 8G (on POWER) - it's all fair game
17:21:13 sean-k-mooney stephenfin: that is not alwasy true
17:21:23 sean-k-mooney many people do care about the page size
17:21:23 efried Did we ever implement required=in:T1,T2,T3?
17:21:29 sean-k-mooney no
17:21:35 efried so
17:21:38 sean-k-mooney if we did we could use that
17:22:01 sean-k-mooney although no it would not work because reqired in was for traits
17:22:05 efried if people care about specific page sizes, we have a trait that says PAGE_SIZES_HERE_ARE_4K.
17:22:05 efried But if people care about 'large', where that's allowed to mean "bigger than X", that doesn't work.
17:22:06 stephenfin right, and those people are probably explicitly saying e.g. 'hw:mem_page_size=2k'
17:22:13 sean-k-mooney yes
17:22:21 stephenfin or know that their datacenter is configured with only 2k or 1G pages
17:22:25 efried (is bauzas still listening btw?)
17:22:32 stephenfin bauzas is on kid duty
17:22:35 stephenfin but has scrollback
17:22:35 efried k
17:22:38 efried yuh
17:23:24 stephenfin efried: Still not sure how we do the step_size determination though
17:23:30 sean-k-mooney https://etherpad.openstack.org/p/mem_page_size_and_placement
17:23:37 sean-k-mooney lets go there too
17:23:39 efried stephenfin: Doesn't the virt driver know how big its pages are?
17:23:44 sean-k-mooney yes
17:23:51 efried that's the step_size.
17:23:52 sean-k-mooney and a host can have multiple pages sizes
17:24:03 efried in the same numa cell?
17:24:15 sean-k-mooney a host can have 4k 2mb and 1g in the same cell yes
17:24:16 gibi stephenfin: having a single representation is a positive thing for me. and I accept that it will be python instead of yaml
17:24:18 stephenfin But you don't know what virt driver you're going to use before you query placement
17:24:28 efried stephenfin: step_size is part of the model, not part of the query.
17:24:30 sean-k-mooney yep which is why large is a thing
17:24:50 sean-k-mooney efried: yep that was why step size did not work when i discussed this in the past
17:25:04 efried because you can have different size pages in the same cell.
17:25:07 sean-k-mooney we cant say 10G of ram in 1G increments
17:25:24 sean-k-mooney at least not with just stepsize
17:25:30 stephenfin efried: you can, and not everything the same size
17:25:47 efried okay, then there's no way this works without an abstraction and/or simplification.
17:25:55 efried so we need to decide what to cut
17:26:05 stephenfin How would you say "give me a compute node that can handle an 8GB instance with 1G pages"
17:26:06 efried because we're not going to make resource classes for PAGE_$size
17:26:23 stephenfin I don't see how we can avoid it
17:26:36 stephenfin a 4k page != a 2M page
17:26:45 efried stephenfin: because then you *can't* say "give me an instance with 8GB"
17:27:00 efried which is surely the more common use case?
17:27:06 stephenfin sure you can
17:27:13 stephenfin we just translate the request
17:27:24 efried you would have to translate the request into multiple GET /a_c queries.
17:27:34 efried because you can build 8GB a zillion different ways
17:27:46 efried AND it requires discovery of which page-size-resource-classes exist in your deployment.
17:27:51 efried that's a non-starter, sorry.
17:28:01 stephenfin No, you can't consume hugepages unless you explicitly request them
17:28:08 sean-k-mooney so by default if you dont specify hw:mem_page_size it has to be the smalles page size
17:28:19 sean-k-mooney efried: that is why i want mempage_small and mempage_large to be different resoce classes
17:28:20 efried but "huge" isn't a discrete number?
17:28:39 efried so again, if you do that, you can't ask for 8GB
17:28:43 stephenfin hugepages are offlimits for instances without 'hw:mem_page_size'
17:28:43 stephenfin right, sean-k-mooney?
17:28:54 efried because you have to ask for a number of pages, but you don't know how big those pages are.
17:29:02 stephenfin yeah, that one is a problem
17:29:10 stephenfin because it's intentionally abstract
17:29:30 sean-k-mooney yes
17:29:32 sean-k-mooney if you dont set hw:mem_page_size you will only use 4k memory
17:29:42 stephenfin right
17:29:59 stephenfin so for non-hugepages instances, there will only ever be a single GET /a_c query
17:30:07 efried um
17:30:12 stephenfin for MEMORY_MB or PAGES_4K or whatever we call it
17:30:13 sean-k-mooney efried: its that way because people wanted to change for hugepages and people did not want all instacne to have a numa toplogy by defualt
17:30:13 efried there will only ever be a single GET /a_c query.
17:30:20 efried ever ever
17:30:46 stephenfin not for pinned instances, at the moment
17:30:53 stephenfin but that's a temporary thing
17:30:55 stephenfin agreed
17:30:56 sean-k-mooney so i was proposeing useing MEMORY_MB for non numa small pages
17:31:01 sean-k-mooney e.g. on the root RP
17:31:04 efried sean-k-mooney: we're simplifying the "all instances have a numa topology" aspect by saying that NUMA-aware requests only go to NUMA-modeled hosts and vice versa.
17:31:22 stephenfin sean-k-mooney: agree on the first part. disagree on the second
17:31:35 stephenfin it's on the root RP if that compute node is configured to be NUMA'y
17:31:36 sean-k-mooney well that is all hosts
17:31:42 efried The small pages are still affined, yah?
17:31:50 efried So they should be modeled on the NUMA RPs
17:31:54 sean-k-mooney there are no non numa host for the better part of a decade
17:31:56 stephenfin efried: If you're using guest NUMA, they should be
17:32:11 stephenfin sean-k-mooney: No, but there are people who pretend they don't exist
17:32:14 stephenfin *they exist
17:32:16 sean-k-mooney efried: they have an affinty but they are allocated by the kernel
17:32:17 efried yeah, so given a strict NUMA-or-not split, I don't see a reason to keep any memory on the root
17:32:24 sean-k-mooney and they can move between numa nodes

Earlier   Later