Since the return value variable in mem_cgroup_zone_nr_lru_pages and
mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
value of funtions by u64 to avoid overflow.
On Sat, Jun 23, 2012 at 02:15:34PM +0800, Wanpeng Li wrote:
> From: Wanpeng Li <l...@linux.vnet.ibm.com>
> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
> value of funtions by u64 to avoid overflow.
I wonder what 16 TB of memory must think running on a 32-bit kernel...
"What is this, an address space for ants?"
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
On Sat, Jun 23, 2012 at 10:15:14AM +0200, Johannes Weiner wrote:
>On Sat, Jun 23, 2012 at 02:15:34PM +0800, Wanpeng Li wrote:
>> From: Wanpeng Li <l...@linux.vnet.ibm.com>
>> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
>> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
>> value of funtions by u64 to avoid overflow.
>I wonder what 16 TB of memory must think running on a 32-bit kernel...
>"What is this, an address space for ants?"
Hi Johannes,
You mean change all u64 in memcg to unsigned long? or something I
miss....
On Sat, Jun 23, 2012 at 05:03:39PM +0800, Wanpeng Li wrote:
> On Sat, Jun 23, 2012 at 10:15:14AM +0200, Johannes Weiner wrote:
> >On Sat, Jun 23, 2012 at 02:15:34PM +0800, Wanpeng Li wrote:
> >> From: Wanpeng Li <l...@linux.vnet.ibm.com>
> >> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
> >> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
> >> value of funtions by u64 to avoid overflow.
> >I wonder what 16 TB of memory must think running on a 32-bit kernel...
> >"What is this, an address space for ants?"
> Hi Johannes,
> You mean change all u64 in memcg to unsigned long? or something I
> miss....
Not _all_ of them, we have some that count bytes. But those counting
pages should probably be ulong, yes.
I think Kame added the ones that you wanted to adjust the surroundings
for in particular, so let's ask him. Kame?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
> On Sat, Jun 23, 2012 at 05:03:39PM +0800, Wanpeng Li wrote:
>> On Sat, Jun 23, 2012 at 10:15:14AM +0200, Johannes Weiner wrote:
>>> On Sat, Jun 23, 2012 at 02:15:34PM +0800, Wanpeng Li wrote:
>>>> From: Wanpeng Li <l...@linux.vnet.ibm.com>
>>>> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
>>>> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
>>>> value of funtions by u64 to avoid overflow.
>>> I wonder what 16 TB of memory must think running on a 32-bit kernel...
>>> "What is this, an address space for ants?"
>> Hi Johannes,
>> You mean change all u64 in memcg to unsigned long? or something I
>> miss....
> Not _all_ of them, we have some that count bytes. But those counting
> pages should probably be ulong, yes.
> I think Kame added the ones that you wanted to adjust the surroundings
> for in particular, so let's ask him. Kame?
I've been using 'unsigned long' for the number of pages and 'u64' for the number of
bytes. I think it's enough and it should be. I don't have any reason to use u64 for
the number of pages on 32bit archs.
If 'bytes' are handled by 'unsigned long', please fix it.
BTW, zone_page_state()::/include/linux/vmstat.h returns 'unsigned long'.
If you want to change this in memcg, please change zone's ones first.
On Mon, Jun 25, 2012 at 01:24:26PM +0900, Kamezawa Hiroyuki wrote:
>(2012/06/23 18:26), Johannes Weiner wrote:
>>On Sat, Jun 23, 2012 at 05:03:39PM +0800, Wanpeng Li wrote:
>>>On Sat, Jun 23, 2012 at 10:15:14AM +0200, Johannes Weiner wrote:
>>>>On Sat, Jun 23, 2012 at 02:15:34PM +0800, Wanpeng Li wrote:
>>>>>From: Wanpeng Li <l...@linux.vnet.ibm.com>
>>>>>Since the return value variable in mem_cgroup_zone_nr_lru_pages and
>>>>>mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
>>>>>value of funtions by u64 to avoid overflow.
>>>>I wonder what 16 TB of memory must think running on a 32-bit kernel...
>>>>"What is this, an address space for ants?"
>>>Hi Johannes,
>>>You mean change all u64 in memcg to unsigned long? or something I
>>>miss....
>>Not _all_ of them, we have some that count bytes. But those counting
>>pages should probably be ulong, yes.
>>I think Kame added the ones that you wanted to adjust the surroundings
>>for in particular, so let's ask him. Kame?
>I've been using 'unsigned long' for the number of pages and 'u64' for the number of
>bytes. I think it's enough and it should be. I don't have any reason to use u64 for
>the number of pages on 32bit archs.
>If 'bytes' are handled by 'unsigned long', please fix it.
>BTW, zone_page_state()::/include/linux/vmstat.h returns 'unsigned long'.
>If you want to change this in memcg, please change zone's ones first.
Thank you for your comments Kame! :-) I will do this in next version.
Is any suggestion about patches in this patchset.
Since the return value variable in mem_cgroup_zone_nr_lru_pages and
mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
value of funtions by u64 to avoid overflow.
> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
> value of funtions by u64 to avoid overflow.
> -static inline unsigned long zone_page_state(struct zone *zone,
> +static inline u64 zone_page_state(struct zone *zone,
> enum zone_stat_item item)
> {
> long x = atomic_long_read(&zone->vm_stat[item]);
We established that there is no known reason to use ulong for page
counters and that IF YOU HAD ONE, you should obviously say so and then
do a wholesale conversion. But I don't think you have one.
This patch makes absolutely no sense.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
>> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
>> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
>> value of funtions by u64 to avoid overflow.
>> -static inline unsigned long zone_page_state(struct zone *zone,
>> +static inline u64 zone_page_state(struct zone *zone,
>> enum zone_stat_item item)
>> {
>> long x = atomic_long_read(&zone->vm_stat[item]);
> We established that there is no known reason to use ulong for page
> counters and that IF YOU HAD ONE, you should obviously say so and then
> do a wholesale conversion. But I don't think you have one.
On Mon, Jun 25, 2012 at 05:30:11PM +0900, Kamezawa Hiroyuki wrote:
>(2012/06/25 16:52), Johannes Weiner wrote:
>>On Mon, Jun 25, 2012 at 02:04:20PM +0800, Wanpeng Li wrote:
>>>Changlog:
>>>Since the return value variable in mem_cgroup_zone_nr_lru_pages and
>>>mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
>>>value of funtions by u64 to avoid overflow.
>>>-static inline unsigned long zone_page_state(struct zone *zone,
>>>+static inline u64 zone_page_state(struct zone *zone,
>>> enum zone_stat_item item)
>>> {
>>> long x = atomic_long_read(&zone->vm_stat[item]);
>>We established that there is no known reason to use ulong for page
>>counters and that IF YOU HAD ONE, you should obviously say so and then
>>do a wholesale conversion. But I don't think you have one.
>>This patch makes absolutely no sense.
>I agree. Then, Nack from me.
>Thanks,
>-Kame
static unsigned long
mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
int nid, unsigned int lru_mask)
{
u64 total = 0;
int zid;
for (zid = 0; zid < MAX_NR_ZONES; zid++)
total += mem_cgroup_zone_nr_lru_pages(memcg,
nid, zid, lru_mask);
return total;
}
Since you use unsigned long to caculate nr_pages and unsigned long long
to caculate bytes, so u64 in function mem_cgroup_node_nr_lru_pages should replace by unsigned long to save kernel stack, right?
> On Mon, Jun 25, 2012 at 05:30:11PM +0900, Kamezawa Hiroyuki wrote:
>> (2012/06/25 16:52), Johannes Weiner wrote:
>>> On Mon, Jun 25, 2012 at 02:04:20PM +0800, Wanpeng Li wrote:
>>>> Changlog:
>>>> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
>>>> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
>>>> value of funtions by u64 to avoid overflow.
>>>> -static inline unsigned long zone_page_state(struct zone *zone,
>>>> +static inline u64 zone_page_state(struct zone *zone,
>>>> enum zone_stat_item item)
>>>> {
>>>> long x = atomic_long_read(&zone->vm_stat[item]);
>>> We established that there is no known reason to use ulong for page
>>> counters and that IF YOU HAD ONE, you should obviously say so and then
>>> do a wholesale conversion. But I don't think you have one.
>>> This patch makes absolutely no sense.
>> I agree. Then, Nack from me.
>> Thanks,
>> -Kame
> static unsigned long
> mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
> int nid, unsigned int lru_mask)
> {
> u64 total = 0;
> int zid;
> for (zid = 0; zid < MAX_NR_ZONES; zid++)
> total += mem_cgroup_zone_nr_lru_pages(memcg,
> nid, zid, lru_mask);
> return total;
> }
> Since you use unsigned long to caculate nr_pages and unsigned long long
> to caculate bytes, so u64 in function mem_cgroup_node_nr_lru_pages should > replace by unsigned long to save kernel stack, right?
How many bytes do you intend to save by replacing "u64" with "unsigned
long" ? Have you asked yourself this question ?
On Wed, Jul 04, 2012 at 04:29:48PM +0400, Glauber Costa wrote:
> On 07/04/2012 04:24 PM, Wanpeng Li wrote:
> > On Mon, Jun 25, 2012 at 05:30:11PM +0900, Kamezawa Hiroyuki wrote:
> >> (2012/06/25 16:52), Johannes Weiner wrote:
> >>> On Mon, Jun 25, 2012 at 02:04:20PM +0800, Wanpeng Li wrote:
> >>>> Changlog:
> >>>> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
> >>>> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
> >>>> value of funtions by u64 to avoid overflow.
> >>>> -static inline unsigned long zone_page_state(struct zone *zone,
> >>>> +static inline u64 zone_page_state(struct zone *zone,
> >>>> enum zone_stat_item item)
> >>>> {
> >>>> long x = atomic_long_read(&zone->vm_stat[item]);
> >>> We established that there is no known reason to use ulong for page
> >>> counters and that IF YOU HAD ONE, you should obviously say so and then
> >>> do a wholesale conversion. But I don't think you have one.
> >>> This patch makes absolutely no sense.
> >> I agree. Then, Nack from me.
> >> Thanks,
> >> -Kame
> > static unsigned long
> > mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
> > int nid, unsigned int lru_mask)
> > {
> > u64 total = 0;
> > int zid;
> > for (zid = 0; zid < MAX_NR_ZONES; zid++)
> > total += mem_cgroup_zone_nr_lru_pages(memcg,
> > nid, zid, lru_mask);
> > return total;
> > }
> > Since you use unsigned long to caculate nr_pages and unsigned long long
> > to caculate bytes, so u64 in function mem_cgroup_node_nr_lru_pages should > > replace by unsigned long to save kernel stack, right?
> How many bytes do you intend to save by replacing "u64" with "unsigned
> long" ? Have you asked yourself this question ?
I think fixing these types is a good thing. Not for their memory
savings but to clarify the code. Otherwise, people will scratch their
heads and waste time over whether there is something that requires the
counter to be 64-bit on a 32-bit system when really there isn't.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
> On Wed, Jul 04, 2012 at 04:29:48PM +0400, Glauber Costa wrote:
>> On 07/04/2012 04:24 PM, Wanpeng Li wrote:
>>> On Mon, Jun 25, 2012 at 05:30:11PM +0900, Kamezawa Hiroyuki wrote:
>>>> (2012/06/25 16:52), Johannes Weiner wrote:
>>>>> On Mon, Jun 25, 2012 at 02:04:20PM +0800, Wanpeng Li wrote:
>>>>>> Changlog:
>>>>>> Since the return value variable in mem_cgroup_zone_nr_lru_pages and
>>>>>> mem_cgroup_node_nr_lru_pages functions are u64, so replace the return
>>>>>> value of funtions by u64 to avoid overflow.
>>>>>> -static inline unsigned long zone_page_state(struct zone *zone,
>>>>>> +static inline u64 zone_page_state(struct zone *zone,
>>>>>> enum zone_stat_item item)
>>>>>> {
>>>>>> long x = atomic_long_read(&zone->vm_stat[item]);
>>>>> We established that there is no known reason to use ulong for page
>>>>> counters and that IF YOU HAD ONE, you should obviously say so and then
>>>>> do a wholesale conversion. But I don't think you have one.
>>>>> This patch makes absolutely no sense.
>>>> I agree. Then, Nack from me.
>>>> Thanks,
>>>> -Kame
>>> static unsigned long
>>> mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
>>> int nid, unsigned int lru_mask)
>>> {
>>> u64 total = 0;
>>> int zid;
>>> for (zid = 0; zid < MAX_NR_ZONES; zid++)
>>> total += mem_cgroup_zone_nr_lru_pages(memcg,
>>> nid, zid, lru_mask);
>>> return total;
>>> }
>>> Since you use unsigned long to caculate nr_pages and unsigned long long
>>> to caculate bytes, so u64 in function mem_cgroup_node_nr_lru_pages should >>> replace by unsigned long to save kernel stack, right?
>> How many bytes do you intend to save by replacing "u64" with "unsigned
>> long" ? Have you asked yourself this question ?
> I think fixing these types is a good thing. Not for their memory
> savings but to clarify the code. Otherwise, people will scratch their
> heads and waste time over whether there is something that requires the
> counter to be 64-bit on a 32-bit system when really there isn't.
I don't see a reason not to be type consistent, it's just not a stack
issue at all. Being just a type fix, its benefits need to be offset
against any problems it may bring, such as conflicts with other people
working on that, risking doing a mid-term conversion that break
something, and all the likes.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/