Linux系統Large Pages設置

Large Pages說明 

sun文檔: http://www.oracle.com/technetwork/java/javase/tech/largememory-jsp-137182.html 

說白了,就是在操做系統級別上,針對進程的虛擬內存空間,使用大內存頁,避免頻繁的進行頁換入換出,出現系統抖動。一樣使用大內存分頁,也會有一些負面影響,兩快大內存分頁之間會出現一些內存碎片,從而影響總體系統的性能,當一旦沒有足夠的大內存塊時,整個OS下系統進程又會將原先的大內存打散恢復默認的內存分頁。 

javascript

摘自sun文檔的原話 寫道
A Translation-Lookaside Buffer (TLB) is a page translation cache that holds the most-recently used virtual-to-physical address translations. TLB is a scarce system resource. A TLB miss can be costly as the processor must then read from the hierarchical page table, which may require multiple memory accesses. By using bigger page size, a single TLB entry can represent larger memory range. There will be less pressure on TLB and memory-intensive applications may have better performance.  

However please note sometimes using large page memory can negatively affect system performance. For example, when a large mount of memory is pinned by an application, it may create a shortage of regular memory and cause excessive paging in other applications and slow down the entire system. Also please note for a system that has been up for a long time, excessive fragmentation can make it impossible to reserve enough large page memory. When it happens, either the OS or JVM will revert to using regular pages.  



Linux下如何配置large Page 
Large page support is included in 2.6 kernel. Some vendors have backported the code to their 2.4 based releases. To check if your system can support large page memory, try the following: 

html

Linux shell代碼     收藏代碼
  1. cat /proc/meminfo | grep Huge  
  2. HugePages_Total: 0  
  3. HugePages_Free: 0  
  4. Hugepagesize: 2048 kB  



If the output shows the three "Huge" variables then your system can support large page memory, but it needs to be configured. If the command doesn't print out anything, then large page support is not available. To configure the system to use large page memory, one must log in as root, then: 

Increase SHMMAX value. It must be larger than the Java heap size. On a system with 4 GB of physical RAM (or less) the following will make all the memory sharable: 
java

Linux shell代碼     收藏代碼
  1. echo 4294967295 > /proc/sys/kernel/shmmax  

Specify the number of large pages. In the following example 3 GB of a 4 GB system are reserved for large pages (assuming a large page size of 2048k, then 3g = 3 x 1024m = 3072m = 3072 * 1024k = 3145728k, and 3145728k / 2048k = 1536): 
web

Linux shell代碼     收藏代碼
  1. echo 1536 > /proc/sys/vm/nr_hugepages  


Note the /proc values will reset after reboot so you may want to set them in an init script (e.g. rc.local or sysctl.conf). 

參數配置 
sun jdk : 
shell


jrockit jdk : 
oracle

相關文章
相關標籤/搜索