Benefit of this approach is we can remove 8(4) bytes from struct page.

Other changes are: - lock/unlock_page_cgroup() uses its own bit on struct page_cgroup. - all necessary page_cgroups are allocated at boot.

Characteristics: - page cgroup is allocated as some amount of chunk. This patch uses SECTION_SIZE as size of chunk if 64bit/SPARSEMEM is enabled. If not, appropriate default number is selected. - all page_cgroup struct is maintained by hash. I think we have 2 ways to handle sparse index in general ...radix-tree and hash. This uses hash because radix-tree's layout is affected by memory map's layout. - page_cgroup.h/page_cgroup.c is added.