On Fri, Jun 24, 2011 at 7:40 AM, Kevin Constantine
<kevin.constant...@disneyanimation.com> wrote:
> On 06/23/2011 05:51 PM, Balbir Singh wrote:
>>>
>>> Once I have a cgroup struct from cgroup_get_cgroup(), it would be helpful
>>> to
>>> know what controllers it contains.  I can get a cgroup_controller struct
>>> with cgroup_get_controller(), but I need to know the controller name is
>>> to
>>> get that.
>>>
>>> Is there a method to return the list of controller names (or controller
>>> structs) that are in a cgroup?
>>
>> I see what you mean, this is the tricky bit and probably an area where
>> we could improve. We assume the programmer knows what controller is
>> being dealt with (since the control file names are controller
>> specific). For example, lets say we want CPU control, then one could
>> use
>>
>> cgroup_get_controller(cgroup, "cpu") to return the controller and then
>> use the controller further to read values
>>
>> If we wanted to set any value, we know the file to set (say
>> cpu.shares), then we do
>>
>> cgroup_add_controller(cgroup, "cpu") and set values in it
>>
>> I hope that helps,
>>
>
> Yeah, it helps me to understand what is expected of the end developer,
> versus what will be handled in the libcg api.  I'm just trying to get my
> head wrapped around how you all envision the api being used.
>

I am glad I was able to help, we'll try and simplify the API further for sure.

>> FYI: We need to work on a layer 2 API that abstracts all these details
>> and creates more meaningful names like set_cpu_shares(),
>> get_cpu_shares(), etc.
>>
>> If you don't mind, can I ask how you are using libcgroup, what is the use
>> case?
>>
>
> We're using cgroups in our render environment to pin batch jobs and their
> child processes to individual cpu's to avoid processes hopping around to
> different cores and flushing their caches.  Basically each batch job gets
> its own cgroup with the cpuset controller and we allocate a single cpu to
> that cgroup.
>
> We're also using them to run batch jobs on our interactive workstations
> without impacting the end user.  We're carving off a few cores and a few
> GB's of RAM from each workstation to run batch jobs on throughout the day.
>

cool! nice use of partitioning

> Basically the batch scheduler is dynamically creating and destroying cgroups
> pretty regularly.  I wrote code to do all of that and then realized that
> libcgroup exists, so now I'm going back through and refactoring to use the
> api as much as possible.
>

Wonderful! Please do share your pain points and experiences

> What I found when writing the initial code was that error checking was a
> giant pain in the neck, especially when removing a cgroup.  I'm hoping that
> the api will abstract most of that away for me.  I'm also hoping that I'll
> be able to reduce some of the hard-coded assumptions I originally made (like
> we're mounting at /cgroup for example)
>
> Thanks for the help so far.

Your welcome, so based on the feedback you want

1. Simpler API
2. Simpler Error handling

Balbir

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to