task_struct 时间成员相关

[31942.572631] [SC2331]timer[3]
[31942.572692] [SDIOTRAN]gpio_timer_handler:gpio_opt_tag=0
[31942.572814] [SC2331]time[0]

crash32> task d9c4ad00 4238
PID: 4238   TASK: d9c4ad00  CPU: 0   COMMAND: "wlan_trans"
struct task_struct {
  state = 1,
  stack = 0xc6b0a000,
  usage = {
    counter = 2
  },
  flags = 2130240,
  ptrace = 0,
  wake_entry = {
    next = 0x0 <__vectors_start>
  },

    ....
    exec_start = 31942572845458,
    sum_exec_runtime = 360468963305,
    vruntime = 18446744073704671489,
    prev_sum_exec_runtime = 4089356,
    nr_migrations = 317,
    parent = 0x0 <__vectors_start>,
    cfs_rq = 0xc1505088,
    my_q = 0x0 <__vectors_start>,
    avg = {
      runnable_avg_sum = 14049,
      runnable_avg_period = 14068,
      last_runnable_update = 258013732909,
      decay_count = 0,
      load_avg_contrib = 1022,
      load_avg_ratio = 1022,
      usage_avg_sum = 2910
    }

    
    
  vfork_done = 0xc6b0bf80,
  set_child_tid = 0x0 <__vectors_start>,
  clear_child_tid = 0x0 <__vectors_start>,
  utime = 0,
  stime = 23194,
  utimescaled = 0,
  stimescaled = 23194,
  gtime = 0,
  prev_cputime = {
    utime = 0,
    stime = 34582
  },
  nvcsw = 4381848,
  nivcsw = 66,
  start_time = {
    tv_sec = 257,
    tv_nsec = 973774413
  },
  real_start_time = {
    tv_sec = 257,
    tv_nsec = 973774413
  },
  min_flt = 0,
 

//顾名思义,这个是该进程使用cpu时间的信息,utime是在用户态下执行的时间,stime是在内核态下执行的时间。

 cputime_t utime, stime;

//下面的是启动的时间,只是时间基准不一样。
 struct timespec start_time;   

 struct timespec real_start_time;

正常调度的栈:

ffffffc0682c42c0:  fffafafafffafafa fffafafafffafafa
ffffffc0682c42d0:  fffafafafffafafa fffafafafffafafa
ffffffc0682c42e0:  fffafafafffafafa fffafafafffafafa
ffffffc0682c3ae0:  tstat_hash_table+3800 pick_next_task_fair+1492
ffffffc0682c3af0:  ffffffc07fe97580 ffffffc000000000
ffffffc0682c3b00:  ffffffc0682c3b30 trace_hardirqs_off+76
ffffffc0682c3b10:  tstat_hash_table+3800 _raw_spin_unlock_irqrestore+52
ffffffc0682c3b20:  ffffffc03d9ddd80 cb88537fdc8ba653
ffffffc0682c3b30:  ffffffc0682c3b80 _raw_spin_unlock_irqrestore+52
ffffffc0682c3b40:  00000000000001c0 usage_lock
ffffffc0682c3b50:  ffffffc0682c3b80 _raw_spin_unlock_irqrestore+60
ffffffc0682c3b60:  00000000000001c0 usage_lock
ffffffc0682c3b70:  ffffffc03d9ddd80 00000000000001c0
ffffffc0682c3b80:  ffffffc0682c3ba0 sprd_update_cpu_usage+220
ffffffc0682c3b90:  dma_cfg_group+10392 ffffffc0026f5d80
ffffffc0682c3ba0:  ffffffc0682c3bd0 __switch_to+128
ffffffc0682c3bb0:  ffffffc0682c3bd0 __switch_to+152
ffffffc0682c3bc0:  ffffffc03d9ddd80 ffffffc0026f5d80
ffffffc0682c3bd0:  ffffffc0682c3bf0 __schedule+708
ffffffc0682c3be0:  ffffffc07fe97580 ffffffc03d9ddd80
ffffffc0682c3bf0:  ffffffc0682c3c50 schedule+60
ffffffc0682c3c00:  ffffffc0026f5d80 nf_conntrack_locks+1280
ffffffc0682c3c10:  0000000000000000 0000000000000000
ffffffc0682c3c20:  0000000000000000 ffffffc077814ce0
ffffffc0682c3c30:  0000000000000000 ffffffc077814c80
ffffffc0682c3c40:  ffffffc0208131c1 ffffffc0208131c0
ffffffc0682c3c50:  ffffffc0682c3c70 schedule_hrtimeout_range_clock+360
ffffffc0682c3c60:  0000000000000000 return_address+96
ffffffc0682c3c70:  ffffffc0682c3d30 schedule_hrtimeout_range+52
ffffffc0682c3c80:  0000000000000000 ffffffc0026f5d80
ffffffc0682c3c90:  0000007935003c38 0000000000000010
ffffffc0682c3ca0:  ep_send_events_proc trace_preempt_on+32
ffffffc0682c3cb0:  sys_epoll_wait+768 0000000000000001
ffffffc0682c3cc0:  sys_epoll_wait+768 0000000000000010
ffffffc0682c3cd0:  ffffffc0682c3d10 preempt_count_sub+112
ffffffc0682c3ce0:  0000000000000001 _raw_spin_unlock_irqrestore+100
ffffffc0682c3cf0:  sys_epoll_wait+768 0000000000000010
ffffffc0682c3d00:  ep_send_events_proc cb88537fdc8ba653
ffffffc0682c3d10:  ffffffc0682c3d40 _raw_spin_unlock_irqrestore+100
ffffffc0682c3d20:  0000000000000140 cb88537fdc8ba653
ffffffc0682c3d30:  ffffffc0682c3d60 sys_epoll_wait+796
ffffffc0682c3d40:  nf_conntrack_locks+1280 sys_epoll_wait+768
ffffffc0682c3d50:  0000000000000000 0000000000000000
ffffffc0682c3d60:  ffffffc0682c3e50 sys_epoll_pwait+304
ffffffc0682c3d70:  0000000000000010 0000004076fb5000
ffffffc0682c3d80:  nf_conntrack_locks+1280 0000007935003c38
ffffffc0682c3d90:  0000000000000112 00000000ffffffff
ffffffc0682c3da0:  000000000000011d 0000000000000016
ffffffc0682c3db0:  sys_call_table   ffffffc0026f5d80
ffffffc0682c3dc0:  0000007935003c38 0000000000000001
ffffffc0682c3dd0:  system_freezing_cnt ffffffc0026f5d80
ffffffc0682c3de0:  0000000000000008 ffffffc0682c3e38
ffffffc0682c3df0:  ffffffc0026f5d80 0000000000000000

一次卡死问题的runq:

core1上有高优先级的task,但是被有被调度到。还请调度器相关同事帮忙看下。


dumplog里最后时刻:
[  660.870505] c2 [sprd-adf][     dpu_enhance_set] enhance slp set

core1上rq如下:

CPU 1 RUNQUEUE: ffffffc07fe82580
  CURRENT: PID: 2354   TASK: ffffffc013383e80  COMMAND: "RenderThread"
      exec_start = 660905524055,
    sum_exec_runtime = 8764968920,
    vruntime = 429539412160,
    prev_sum_exec_runtime = 8764819458,
    nr_migrations = 2264,
    statistics = {
      wait_start = 0,
调用栈如下:
ffffffc01304bba0:  ffffffc01304bbd0 __switch_to+128
ffffffc01304bbb0:  ffffffc01304bbd0 __switch_to+152
ffffffc01304bbc0:  ffffffc07d60dd80 ffffffc013383e80
ffffffc01304bbd0:  ffffffc01304bbf0 __schedule+708
ffffffc01304bbe0:  ffffffc07fe82580 ffffffc07d60dd80
ffffffc01304bbf0:  ffffffc01304bc50 schedule+60
ffffffc01304bc00:  ffffffc013383e80 nf_conntrack_locks+1280
ffffffc01304bc10:  0000000000000000 0000000000000000
ffffffc01304bc20:  0000000000000000 ffffffc017458fe0
ffffffc01304bc30:  0000000000000000 ffffffc017458f80
ffffffc01304bc40:  ffffffc0133b3a01 ffffffc0133b3a00
ffffffc01304bc50:  ffffffc01304bc70 schedule_hrtimeout_range_clock+360
ffffffc01304bc60:  0000000000000000 return_address+96
ffffffc01304bc70:  ffffffc01304bd30 schedule_hrtimeout_range+52
ffffffc01304bc80:  0000000000000000 ffffffc013383e80
ffffffc01304bc90:  0000007941fff118 0000000000000010
ffffffc01304bca0:  ep_send_events_proc trace_preempt_on+32
ffffffc01304bcb0:  sys_epoll_wait+768 0000000000000001
ffffffc01304bcc0:  sys_epoll_wait+768 0000000000000010
ffffffc01304bcd0:  ffffffc01304bd10 preempt_count_sub+112
ffffffc01304bce0:  0000000000000001 _raw_spin_unlock_irqrestore+100
ffffffc01304bcf0:  sys_epoll_wait+768 0000000000000010
ffffffc01304bd00:  ep_send_events_proc cb88537fdc8ba653
ffffffc01304bd10:  ffffffc01304bd40 _raw_spin_unlock_irqrestore+100
ffffffc01304bd20:  0000000000000140 cb88537fdc8ba653
ffffffc01304bd30:  ffffffc01304bd60 sys_epoll_wait+796
ffffffc01304bd40:  nf_conntrack_locks+1280 sys_epoll_wait+768
ffffffc01304bd50:  0000000000000000 0000000000000000
ffffffc01304bd60:  ffffffc01304be50 sys_epoll_pwait+304
ffffffc01304bd70:  0000000000000010 0000004076fa0000
ffffffc01304bd80:  nf_conntrack_locks+1280 0000007941fff118
ffffffc01304bd90:  000000000000002e 00000000ffffffff
ffffffc01304bda0:  000000000000011d 0000000000000016

  
  RT PRIO_ARRAY: ffffffc07fe826f0
     [ 97] PID: 417    TASK: ffffffc06c0d8080  COMMAND: "DispSync"                  //似乎这个DispSync task没被调度
	     on_rq = 0,        //这个为0的话,此task就不会被调度,因为没在runq上,这个线程是通过一个timer将其置1的。
    exec_start = 660897807285,
    sum_exec_runtime = 1630900299,
    vruntime = 4999997,
    prev_sum_exec_runtime = 0,
    nr_migrations = 1238,
    statistics = {

猜你喜欢

转载自blog.csdn.net/chenpuo/article/details/81541177