On Tue, Dec 04, 2018 at 12:41:39PM -0700, Logan Gunthorpe wrote: > > > On 2018-12-04 12:22 p.m., Jerome Glisse wrote: > > So version is a bad prefix, what about type, prefixing target with a > > type id. So that application that are looking for a certain type of > > memory (which has a set of define properties) can select them. Having > > a type file inside the directory and hopping application will read > > that sysfs file is a recipies for failure from my point of view. While > > having it in the directory name is making sure that the application > > has some idea of what it is doing. > > Well I don't think it can be a prefix. It has to be a mask. It might be > things like cache coherency, persistence, bandwidth and none of those > things are mutually exclusive. You are right many are non exclusive. It is just my feeling that having a mask as a file inside the target directory might be overlook by the application which might start using things it should not. At same time i guess if i write the userspace library that abstract this kernel API then i can enforce application to properly select thing. I will use mask in v2. > > >> Also, in the same vein, I think it's wrong to have the API enumerate all > >> the different memory available in the system. The API should simply > >> allow userspace to say it wants memory that can be accessed by a set of > >> initiators with a certain set of attributes and the bind call tries to > >> fulfill that or fallback on system memory/hmm migration/whatever. > > > > We have existing application that use topology today to partition their > > workload and do load balancing. Those application leverage the fact that > > they are only running on a small set of known platform with known topology > > here i want to provide a common API so that topology can be queried in a > > standard by application. > > Existing applications are not a valid excuse for poor API design. > Remember, once this API is introduced and has real users, it has to be > maintained *forever*, so we need to get it right. Providing users with > more information than they need makes it exponentially harder to get > right and support. I am not disagreeing on the pain of maintaining API forever but the fact remain that they are existing user and without a standard way of exposing this it is impossible to say if we will see more users for that information or if it will just be the existing user that will leverage this. I do not think there is a way to answer that question. I am siding on the side of this API can be dumb down in userspace by a common library. So let expose the topology and let userspace dumb it down. If we dumb it down in the kernel i see few pitfalls: - kernel dumbing it down badly - kernel dumbing down code can grow out of control with gotcha for platform - it is still harder to fix kernel than userspace in commercial user space (the whole RHEL business of slow moving and long supported kernel). So on those being able to fix thing in userspace sounds pretty enticing Cheers, Jérôme