DB> My thought on the overall design of this internal API is that it DB> is too low level & pushing too much work to the caller. eg, the DB> caller would have to lookup virCGroupPtr objects for each DB> controller it cares about, Well, that's not what I had in mind, actually. DB> and has to remember the tunables & their data types. Not pushing the actual value names up to the caller is a reasonable abstraction, I suppose. It seems like in the future QEMU may want to use one type of memory limit, where LXC wants another. I can see LXC domains having multiple memory limits (soft, hard, per process, per group, etc) where those might not be meaningful to QEMU domains. DB> While this kind of interface is applicable for a general purpose DB> API, libvirt's needs are not general purpose. While LXC driver is DB> the only current user, as more controllers are added I anticipate DB> that QEMU driver might use cgroups, eg for I/O controls and CPU DB> schedular controls Indeed. DB> As such I'd expect an API to be at a slightly higher level of DB> abstraction, strongly typed and a single cgroup object associated DB> with a domain object. DB> virDomainObjPtr dom = ...driver's internal domain object... DB> virCGroupPtr cg = virCGroupNew(dom); DB> # Set domain memory limit to 1 GB DB> virCGroupSetMemory(cg, 1024 * 1024 * 1024); DB> # Remove all device permissions DB> virCGroupDenyAllDevices(cg); DB> # Allow access to /dev/null device DB> virCGroupAllowDevice(cg, 3, 1) DB> Some of the existing APIs could be made static since they'd be DB> needed anyway, but some could be re-design to be tailored to DB> the semantics we want. Okay, I'll reswizzle it and re-post. -- Dan Smith IBM Linux Technology Center Open Hypervisor Team email: danms@xxxxxxxxxx
Attachment:
pgpxZTrkTjyds.pgp
Description: PGP signature
-- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list