Thread (34 messages) 34 messages, 5 authors, 2012-10-26

Re: [PATCH v4 10/10] thp: implement refcounting for huge zero page

From: Kirill A. Shutemov <hidden>
Date: 2012-10-23 23:36:48
Also in: lkml

On Tue, Oct 23, 2012 at 03:59:15PM -0700, Andrew Morton wrote:
On Tue, 23 Oct 2012 10:00:18 +0300
"Kirill A. Shutemov" [off-list ref] wrote:
quoted
quoted
Well, how hard is it to trigger the bad behavior?  One can easily
create a situation in which that page's refcount frequently switches
from 0 to 1 and back again.  And one can easily create a situation in
which the shrinkers are being called frequently.  Run both at the same
time and what happens?
If the goal is to trigger bad behavior then:

1. read from an area where a huge page can be mapped to get huge zero page
   mapped. hzp is allocated here. refcounter == 2.
2. write to the same page. refcounter == 1.
3. echo 3 > /proc/sys/vm/drop_caches. refcounter == 0 -> free the hzp.
4. goto 1.

But it's unrealistic. /proc/sys/vm/drop_caches is only root-accessible.
Yes, drop_caches is uninteresting.
quoted
We can trigger shrinker only under memory pressure. But in this, most
likely we will get -ENOMEM on hzp allocation and will go to fallback path
(4k zero page).
I disagree.  If, for example, there is a large amount of clean
pagecache being generated then the shrinkers will be called frequently
and memory reclaim will be running at a 100% success rate.  The
hugepage allocation will be successful in such a situation?
Yes.

Shrinker callbacks are called from shrink_slab() which happens after page
cache reclaim, so on next reclaim round page cache will reclaim first and
we will avoid frequent alloc-free pattern.

One more thing we can do: increase shrinker->seeks to something like
DEFAULT_SEEKS * 4. In this case shrink_slab() will call our callback after
callbacks with DEFAULT_SEEKS.

-- 
 Kirill A. Shutemov

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help