Panique du noyau-erreur entachée de java due à UseLargePages


Je rencontre un problème étrange de "Panique du noyau" en essayant d'utiliser UseLargePages comme l'un des paramètres de la JVM. Au moment où j'essaie d'exécuter une commande java, le système d'exploitation se bloque et je suis obligé de re-bbot.J'utilise 64 bits CentOS 6.2 (Linux 2.6.32-220.23.1). Voici ce que j'ai fait pour mettre en place les LargePages.

  • Ajouté les entrées suivantes dans /etc/sysctl.conf

kernel.shmmax = 4294967296
vm.nr_hugepages = 2048
vm.hugetlb_shm_group = 502
  • Ma jvm s'exécute sous l'utilisateur root, donc ajouté root dans le cadre de ce groupe > > hugetlb
  • mise à Jour /etc/security/limits.conf {[6] } pour ajouter ce qui suit

root            soft    memlock         4194304
root            hard    memlock         4194304
  • Mise à jour de la ligne de commande du noyau pour utiliser des hugepages non transparents transparent_hugepage=never meminfo montre
    
    cat /proc/meminfo | grep Huge
    AnonHugePages:         0 kB
    HugePages_Total:    2048
    HugePages_Free:     2048
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    
    Enfin, j'ai ajouté le" - XX:+UseLargePages " comme l'un des paramètres de démarrage de la JVM.Maintenant, au moment où j'exécute une commande java, par exemple "java-version", le système d'exploitation se bloque, j'ai dû recourir à un re-boot. Voici un stacktrace du journal du système d'exploitation.

Noyau panique - pas de synchronisation: Exception fatale Pid: 1790, comm: java Contaminé: G D ---------------- 2.6.32-220.23.1.el6.centos.majoré.x86_64 #1


Kernel panic - not syncing: Fatal exception

Pid: 1790, comm: java Tainted: G      D    ----------------   2.6.32-220.23.1.el6.centos.plus.x86_64 #1

Call Trace:
 [] ? panic+0x78/0x143
 [] ? xen_restore_fl_direct_end+0x0/0x1
 [] ? _spin_unlock_irqrestore+0x1c/0x20
 [] ? oops_end+0xe4/0x100
 [] ? no_context+0xfb/0x260
 [] ? __alloc_pages_nodemask+0x111/0x940
 [] ? __bad_area_nosemaphore+0x125/0x1e0
 [] ? __raw_callee_save_xen_pmd_val+0x11/0x1e
 [] ? bad_area_nosemaphore+0x13/0x20
 [] ? __do_page_fault+0x31d/0x480
 [] ? __lru_cache_add+0x40/0x90
 [] ? xen_set_pte_at+0xaf/0x170
 [] ? page_add_new_anon_rmap+0x9d/0xf0
 [] ? handle_pte_fault+0x487/0xb50
 [] ? do_page_fault+0x3e/0xa0
 [] ? page_fault+0x25/0x30
 [] ? __unmap_hugepage_range+0x1f2/0x300
 [] ? __unmap_hugepage_range+0xdf/0x300
 [] ? unmap_hugepage_range+0x54/0x90
 [] ? unmap_vmas+0xae7/0xc00
 [] ? release_pages+0x21c/0x250
 [] ? check_events+0x12/0x20
 [] ? xen_force_evtchn_callback+0xd/0x10
 [] ? check_events+0x12/0x20
 [] ? unmap_region+0x91/0x130
 [] ? do_munmap+0x2b6/0x3a0
 [] ? sys_munmap+0x56/0x80
 [] ? system_call_fastpath+0x16/0x1b
Xen Minimal OS!

Je ne sais pas ce qui cause ce problème. Je ne suis pas un expert du système d'exploitation,donc je n'ai pas beaucoup d'indices pour interpréter le journal. Tout fonctionne si je tourne l'option UseLargePages en commentant kernel.shmmax = 4294967296 . La mémoire totale de la machine est de 15 Go. J'utilise - Xmx6144M-XX:MaxPermSize=128m comme paramètres de mémoire JVM. Est-il quelque chose à voir avec CentOS 6.2 ?

Tous les pointeurs seront appréciés.

Author: Bhavik Ambani, 2014-03-11