On Saturday, August 12, 2017 at 3:01:31 AM UTC-7, Alexandr Nikitin wrote:
>
> I played with Transparent Hugepages some time ago and I want to share some 
> numbers based on real world high-load applications.
> We have a JVM application: high-load tcp server based on netty. No clear 
> bottleneck, CPU, memory and network are equally highly loaded. The amount 
> of work depends on request content.
> The following numbers are based on normal server load ~40% of maximum 
> number of requests one server can handle.
>
> *When THP is off:*
> End-to-end application latency in microseconds:
> "p50" : 718.891,
> "p95" : 4110.26,
> "p99" : 7503.938,
> "p999" : 15564.827,
>
> perf stat -e dTLB-load-misses,iTLB-load-misses -p PID -I 1000
> ...
> ...         25,164,369      iTLB-load-misses
> ...         81,154,170      dTLB-load-misses
> ...
>
> *When THP is always on:*
> End-to-end application latency in microseconds:
> "p50" : 601.196,
> "p95" : 3260.494,
> "p99" : 7104.526,
> "p999" : 11872.642,
>
> perf stat -e dTLB-load-misses,iTLB-load-misses -p PID -I 1000
> ...
> ...    21,400,513      dTLB-load-misses
> ...      4,633,644      iTLB-load-misses
> ...
>
> As you can see THP performance impact is measurable and too significant to 
> ignore. 4.1 ms vs 3.2 ms 99%% and 100M vs 25M TLB misses.
> I also used SytemTap to measure few kernel functions like 
> collapse_huge_page, clear_huge_page, split_huge_page. There were no 
> significant spikes using THP.
> AFAIR that was 3.10 kernel which is 4 years old now. I can repeat 
> experiments with the newer kernels if there's interest. (I don't know what 
> was changed there though)
>

Unfortunately, just because you didn't run into a huge spike during your 
test doesn't mean it won't hit you in the future... The stack trace example 
I posted earlier represents the path that will be taken if an on-demand 
allocation page fault on a THP-allocated region happens when no free 2MB 
page is available in the system. Inducing that behavior is not that hard, 
e.g. just do a bunch of high volume journaling or logging, and you'll 
probably trigger it eventually. And when it does take that path, that will 
be your thread de-fragging the entire system's physical memory, one 2MB 
page at a time.

And when that happens, you're probably not talking 10-20msec. More like 
several hundreds of msec (growing with the system physical memory size, the 
specific stack trace is taken from a RHEL issue that reported >22 seconds). 
If that occasional outlier is something you are fine with, then turning THP 
on for the speed benefits you may be seeing makes sense. But if you can't 
accept the occasional ~0.5+ sec freezes, turn it off. 


>
> On Monday, August 7, 2017 at 6:42:21 PM UTC+3, Peter Veentjer wrote:
>>
>> Hi Everyone,
>>
>> I'm failing to understand the problem with transparent huge pages.
>>
>> I 'understand' how normal pages work. A page is typically 4kb in a 
>> virtual address space; each process has its own. 
>>
>> I understand how the TLB fits in; a cache providing a mapping of virtual 
>> to real addresses to speed up address conversion.
>>
>> I understand that using a large page e.g. 2mb instead of a 4kb page can 
>> reduce pressure on the TLB.
>>
>> So till so far it looks like huge large pages makes a lot of sense; of 
>> course at the expensive of wasting memory if only a small section of a page 
>> is being used. 
>>
>> The first part I don't understand is: why is it called transparent huge 
>> pages? So what is transparent about it? 
>>
>> The second part I'm failing to understand is: why can it cause problems? 
>> There are quite a few applications that recommend disabling THP and I 
>> recently helped a customer that was helped by disabling it. It seems there 
>> is more going on behind the scene's than having an increased page size. Is 
>> it caused due to fragmentation? So if a new page is needed and memory is 
>> fragmented (due to smaller pages); that small-pages need to be compacted 
>> before a new huge page can be allocated? But if this would be the only 
>> thing; this shouldn't be a problem once all pages for the application have 
>> been touched and all pages are retained.
>>
>> So I'm probably missing something simple.
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mechanical-sympathy+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to