2012-04-11 9 views
6

Bir ana bilgisayarın NUMA uyumlu olduğunu nasıl doğrulayabilirim? Oracle doc, NUMA farkındalığının çekirdek 2.6.19'da başladığını, ancak NUMA man page, 2.6.14 ile tanıtıldığını söylüyor. -XX:+UseNUMA ile başlayan bir Java sürecinin aslında bir şeyden faydalandığından emin olmak isterim.NUMA nasıl onaylanır?

numa_maps kontrol etme, ben onlara sahip olduğunu görüyoruz:

# find /proc -name numa_maps 
/proc/1/task/1/numa_maps 
/proc/1/numa_maps 
/proc/2/task/2/numa_maps 
/proc/2/numa_maps 
/proc/3/task/3/numa_maps 

benim çekirdek Oracle devletler arkasında ne olsa:

# uname -sr 
Linux 2.6.18-92.el5 

Şu anda 64 bit jdk1.6.0 kullanıyorum RHEL5.1 üzerinde _29.

+0

Çekirdeğinizi daha yeni bir noktaya yükseltmeyi düşündünüz mü? –

+0

RHEL 5.1 (2007-11-07) oldukça eski, belki de yükseltme zamanı. –

+0

@Peter Tecrübemde NUMA işlemcilerle çalışan kişiler genellikle yazılımı güncellemeden sorumlular ve güncellemeleri almak için oldukça fazla bürokrasiden geçmek zorundalar. Sadece bir * python 2,4 * 2k çekirdekler ile bir süper bilgisayar üzerinde geçen hafta yüklemek .. – Voo

cevap

8

Bu/proc dosyalarının varlığı, linux çekirdeğinizin numa-bilinçli olduğunu gösterir. Sürüm numaralarını, özellikle Oracle/RHEL kernelleriyle, satıcıların port/backport sürüm dizgisini "güncel" olmaksızın pek çok özelliği karşılaştırarak çok fazla endişelendirmeyin.

$ grep NUMA=y /boot/config-`uname -r` 
CONFIG_NUMA=y 
CONFIG_K8_NUMA=y 
CONFIG_X86_64_ACPI_NUMA=y 
CONFIG_ACPI_NUMA=y 

$ numactl --hardware 
available: 2 nodes (0-1) 
node 0 size: 18156 MB 
node 0 free: 9053 MB 
node 1 size: 18180 MB 
node 1 free: 6853 MB 
node distances: 
node 0 1 
    0: 10 20 
    1: 20 10 
+0

rhel'in sırtlığı benim aklımdaydı./boot/config –

+2

ile iyi bir çağrı ama JVM bunu kullanır? numa kullanımda olduğunu göstermek için herhangi bir kayıt var mı? – easytiger

1

Oracle Doküman ayrıca devletler: aynı şeyi test

diğer yolları

Not: olunca JVM çökmesine neden olabilir çekirdeğe bilinen bir hata oluştu -XX ile t: UseNUMA. Hata 2012 yılında düzeltildi, bu yüzden Linux Çekirdeğinin en son sürümlerini etkilememelidir. Çekirdeğinizde bu hatanın olup olmadığını görmek için native reproducer'u çalıştırabilirsiniz. Ben onun sadeliğini göstermek için burada yeniden üretmiş

:

http://docs.oracle.com/javase/7/docs/technotes/guides/vm/reproducer.c

reproducer inşa etmek için, dağıtım bağlı numactl veya numactl-devel paketleri yüklemeniz gerekebilir. Detaylar için bkz. man numa_maps.

#include <numaif.h> 
#include <numa.h> 
#include <stddef.h> 
#include <sys/mman.h> 
#include <stdint.h> 

int main(void) { 
    if (numa_all_nodes_ptr == (void*)0) { 
    return -1; 
    } 

    size_t pagesize = getpagesize(); 

    void* mapped_memory = mmap(NULL, 3 * pagesize, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); 
    if (mapped_memory == MAP_FAILED) { 
    return -2; 
    } 

    void* page0 = mapped_memory; 
    void* page1 = (void*)((uintptr_t)page0 + pagesize); 
    void* page2 = (void*)((uintptr_t)page1 + pagesize); 

// Set up the last page as interleaved. 
    mbind(page2, pagesize, MPOL_INTERLEAVE, numa_all_nodes_ptr->maskp, 
numa_all_nodes_ptr->size, 0); 

    // Setup the last two pages as interleaved. 
    mbind(page1, 2 * pagesize, MPOL_INTERLEAVE, 
numa_all_nodes_ptr->maskp, numa_all_nodes_ptr->size, 0); 

    *((char*)page2) = 2; 
    *((char*)page1) = 1; 
    *((char*)page0) = 0; // Crash here, when mbind_merge was broken. 

    return 0; 
} 

Yani, 2.6.19 ilk güvenli versiyonu olduğu anlamına belirsizlik sürdü.

+0

bunu nasıl derlersiniz? numa başlıkları nerede? – sloven

+0

@Nik numak_maps 'Kitaplık desteğine' göre numactl veya numactl-devel'i yüklemeniz gerekebilir. –

İlgili konular