Re: [PATCH] cgroups: Do not show inactive devices in cgroups statistics

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

On Thu, Jun 27, 2013 at 9:59 AM, Tejun Heo <tj@xxxxxxxxxx> wrote:
> (cc'ing Jens)
>
> Hello,
>
> This one probably needs -stable cc'd.  Jens, do you wanna take this?
> If not, I'll be happy to take it through cgroup tree.

Personally I think it should not go to -stable. The stats was changed
in 3.5 kernel and nobody complained about it, so I guess nobody
(except us) cares about the file format.

> On Thu, Jun 27, 2013 at 09:37:26AM -0700, Anatol Pomozov wrote:
>> Before 3.5 CFQ cgroups stats was lazy initialized - the stat object was created
>> only if the device had any I/O in that cgroup.
>>
>> Around 3.5 time CFQ stat structure became part of device structure. And
>> zero stat is created when device is initialized. Initialization can happen
>> e.g. when we configure it via 'weight_device' file. It calls
>> cfqg_set_weight_device() and it creates cfq_group structure.
>>
>> But even if device is initialized the stats is still zero.
>> If we configure all devices in all in all cgroups it generates a lot of
>> useless stat info that takes more resources to process and store. Imagine
>> servers with handreds cgroups and handreds iSCSI block devices.
>>
>> Do not print stats for inactive devices - it restores functionality
>> that was before 3.5
>>
>> Signed-off-by: Anatol Pomozov <anatol.pomozov@xxxxxxxxx>
>
> Acked-by: Tejun Heo <tj@xxxxxxxxxx>
>
>> ---
>>  block/blk-cgroup.c | 13 +++++++++----
>>  1 file changed, 9 insertions(+), 4 deletions(-)
>>
>> diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
>> index e8918ff..4e07e73 100644
>> --- a/block/blk-cgroup.c
>> +++ b/block/blk-cgroup.c
>> @@ -560,6 +560,7 @@ EXPORT_SYMBOL_GPL(__blkg_prfill_u64);
>>   * @rwstat: rwstat to print
>>   *
>>   * Print @rwstat to @sf for the device assocaited with @pd.
>> + * Devices with zero activity will not be printed.
>>   */
>>  u64 __blkg_prfill_rwstat(struct seq_file *sf, struct blkg_policy_data *pd,
>>                        const struct blkg_rwstat *rwstat)
>> @@ -571,19 +572,23 @@ u64 __blkg_prfill_rwstat(struct seq_file *sf, struct blkg_policy_data *pd,
>>               [BLKG_RWSTAT_ASYNC]     = "Async",
>>       };
>>       const char *dname = blkg_dev_name(pd->blkg);
>> -     u64 v;
>> +     u64 total;
>>       int i;
>>
>>       if (!dname)
>>               return 0;
>>
>> +     total = rwstat->cnt[BLKG_RWSTAT_READ] + rwstat->cnt[BLKG_RWSTAT_WRITE];
>> +     /* skip devices with no activity */
>> +     if (!total)
>> +             return 0;
>> +
>>       for (i = 0; i < BLKG_RWSTAT_NR; i++)
>>               seq_printf(sf, "%s %s %llu\n", dname, rwstr[i],
>>                          (unsigned long long)rwstat->cnt[i]);
>>
>> -     v = rwstat->cnt[BLKG_RWSTAT_READ] + rwstat->cnt[BLKG_RWSTAT_WRITE];
>> -     seq_printf(sf, "%s Total %llu\n", dname, (unsigned long long)v);
>> -     return v;
>> +     seq_printf(sf, "%s Total %llu\n", dname, (unsigned long long)total);
>> +     return total;
>>  }
>>  EXPORT_SYMBOL_GPL(__blkg_prfill_rwstat);
>>
>> --
>> 1.8.3
>>
>
> --
> tejun
--
To unsubscribe from this list: send the line "unsubscribe cgroups" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [Monitors]

  Powered by Linux