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ü.
Çekirdeğinizi daha yeni bir noktaya yükseltmeyi düşündünüz mü? –
RHEL 5.1 (2007-11-07) oldukça eski, belki de yükseltme zamanı. –
@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