2017-09-26 64 views
9

hemen önce function_graph almak için trace-cmd/ftrace kullanıyorum Gördüğüm bir çekirdek çökmesi hakkında daha fazla bilgi toplamak için trace-cmd kullanmaya çalışıyorum. Ne yazık ki, çekirdeği "kernel panik - senkronize edilmiyor" mesajıyla çöküyor (yani, soket ve dosya tamponları temizlenmiyor, böylece çarpışma anında tamponlarda ne varsa kayboldu).panik() oldu

  1. kuvvet trace-cmd süreç dosya sistemi tamponlar veya prizler temizlemesini:

    bir yolu var mı? VE

  2. arabelleklemeyi önlemek için trace-cmd/ftrace yapın (örn. Printk() öğelerinin arkasını çağırın ve netconsole kullanın)?

Ben sadece VM iyi anlık sürmesi veya yeniden dağıtması dönebilirsiniz çünkü sanallaştırılmış ortamda trace-cmd komut sonra, sabit disk bazen bozuk alabilirsiniz umurunda olmadığını çalıştırıyorum beri.

cevap

2

benim tarifi garanti edemez size yardımcı olur, ama kim bilir :)

ilk denemede başta trace-cmd tüm çıkışını unbuffer için. Bunu yapmak için bazı tarifleri bulabilirsiniz https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe

İkincisi, kernel panik üzerinde FS yazma davranışı çok tehlikelidir ve sorun değil, ancak çarpma makinenin dışında ölümden önceki son ısırıkları saklamayı deneyebilirsiniz. Kritik bilgilerinizi seri bağlantı noktasına veya ağ bağlantısına yönlendirmeyi deneyin ve diğer tarafta yakalayın.

unbuffer trace-cmd >/dev/ttyS0 

gibi bir başka yolu hiç panik önlemek denemek ve çekirdek öngörülemeyen sonuçla ancak artık çalışmıyor izin vermektir. Birkaç vaka için paniği devre dışı bırakabilirsiniz. /proc/sys/kernel/ dizinindeki panic_on_* ayarlarına bakın. Daha fazla ayrıntı "Documentation for /proc/sys/kernel/"

+0

'da bulunabilir. Bu sorunu çözmedi, çünkü ftrace ile trace-cmd arasında başka bir tampon olduğuna inanıyorum. Engelleyici sadece STDOUT'u engeller, değil mi? –

+0

Evet, tabiki. Bu yaklaşım sadece tamponlamayı azaltmak için bir deneyin. Başka bir yol panik yapmamaktan kaçınmak ve çekirdeğin daha uzun süre çalışmasına izin vermektir. Birkaç vaka için paniği devre dışı bırakabilirsiniz. "/ Proc/sys/kernel/* Dokümanları" bölümündeki "panic_on_ *" ayarlarına bakın (https://www.kernel.org/doc/Documentation/sysctl/kernel.txt). – MrCryo