2013-11-21 22 views
12

Ubuntu 13.10'u yeni 3.11 çekirdeğiyle kurdum. Ve 3.10'da, yerel zamanlayıcı tarafından kesintiye uğramadan, daha önce olduğu gibi değil, bir işlemi çalıştırabileceğimiz, kenara çekilemeyen bir özellik var. o cpu 3 yerel zamanlayıcı kesmesi gerçekten görünüyor, kapatıp açtıktan sonraÇalışması için kernel çekirdeği nasıl alabilirim? nohz_full, rcu_nocbs, isolcpus başka ne var?

isolcpus=3 nohz_full=3 rcu_nocbs=3 

: Ben http://www.breakage.org/2013/11/nohz_fullgodmode/

ben cpu 3 benim Uygulamayı çalıştırmak için planlanan bu bağlantıyı takip, bu yüzden benim grub şu ayarları diğer cpus'tan daha az.

Ben de koştum:

# for i in `pgrep rcu` ; do taskset -pc 0 $i ; done 

Ama benim app yayınlanmaya başladığında, yerel zamanlayıcı kesilimmi sayımı atladı. Uygulamam sonsuz bir döngüden başka bir şey yapmıyor.

int main() { 
while (true) { 
} 
} 

Peki neden eksiklerim? Bir şey yürüttüğümde neden kesinti geri geliyor? nohz_full, sadece bir işlemin çalıştığı zaman ara vermeyi keseceği anlamına geldiğini düşündüm.

Uygulamayı çalıştırdığımda/proc/sched_debug çıktısı aşağıdaki gibidir ve görünüşe göre bu işlemcide başka bir işlem yoktur. Yani neyi özlüyorum?

cpu#3, 2492.071 MHz 
    .nr_running     : 0 
    .load       : 0 
    .nr_switches     : 45818 
    .nr_load_updates    : 11165 
    .nr_uninterruptible   : -1 
    .next_balance     : 4295.674289 
    .curr->pid      : 0 
    .clock       : 3127610.519188 
    .cpu_load[0]     : 0 
    .cpu_load[1]     : 0 
    .cpu_load[2]     : 0 
    .cpu_load[3]     : 0 
    .cpu_load[4]     : 0 
    .yld_count      : 0 
    .sched_count     : 47377 
    .sched_goidle     : 3956 
    .avg_idle      : 1000000 
    .ttwu_count     : 29329 
    .ttwu_local     : 26078 

cfs_rq[3]:/ 
    .exec_clock     : 15750.800052 
    .MIN_vruntime     : 0.000001 
    .min_vruntime     : 15699.782432 
    .max_vruntime     : 0.000001 
    .spread      : 0.000000 
    .spread0      : -247950.011716 
    .nr_spread_over    : 0 
    .nr_running     : 0 
    .load       : 0 
    .runnable_load_avg    : 0 
    .blocked_load_avg    : 0 
    .tg_load_contrib    : 0 
    .tg_runnable_contrib   : 0 
    .tg_load_avg     : 602 
    .tg->runnable_avg    : 592 
    .avg->runnable_avg_sum   : 0 
    .avg->runnable_avg_period  : 47077 

rt_rq[3]:/ 
    .rt_nr_running     : 0 
    .rt_throttled     : 0 
    .rt_time      : 0.000000 
    .rt_runtime     : 950.000000 

runnable tasks: 
      task PID   tree-key switches prio  exec-runtime   sum- exec  sum-sleep 
---------------------------------------------------------------------------------------- ------------------ 
+0

bu linkler faydalı olabilir: https://access.redhat.com/solutions/15482 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Performance_Tuning_Guide/sect -Red_Hat_Enterprise_Linux-Performance_Tuning_Guide-CPU-Configuration_suggestions.html – javapowered

cevap

3

Tamam, ben yapılandırmasına açmak için kendi çekirdek oluşturmak gerekir bulundu. RHEL 7 için

+0

Tamam, peki ya şimdi ne oldu? (Ayrıca, cevapları elle kontrol etmediğim için lütfen bana bildiriniz) – user2284570

+0

@ user2284570 @@@@@@@@@ – Ming

İlgili konular