免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jian9158101
打印 上一主题 下一主题

[进程管理] 请问:如何将CPU1上面所有任务全部移到CPU0上来运行? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2015-01-22 13:45 |只看该作者
回复 10# humjb_1983
CPU1 online
===
Mem: 191976K used, 821316K free, 0K shrd, 540K buff, 53120K cached
CPU:  0.0% usr  4.5% sys  0.0% nic 95.4% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 1.08 1.03 0.86 1/129 11080
  PID  PPID USER     STAT   VSZ %MEM CPU %CPU COMMAND
11080  3684 root     R     3132  0.3   1  4.5 top -b -n20
3645     1 root     S    13708  1.3   1  0.0 /usr/sbin/hpav_mgr
1680     1 root     S    11752  1.1   0  0.0 /usr/sbin/cmld
2190     1 root     S <  11156  1.1   1  0.0 /usr/sbin/dnrd
3709     1 root     S    11036  1.0   0  0.0 /usr/sbin/cron
2239     1 root     S    10916  1.0   1  0.0 /usr/sbin/udhcpd /var/udhcpd.conf
1682     1 root     S    10872  1.0   1  0.0 /usr/sbin/service_ctrld
3703  3641 root     S    10868  1.0   1  0.0 /usr/sbin/event_monitor
3704  3641 root     S    10868  1.0   1  0.0 /usr/sbin/event_monitor
3693  3641 root     S    10868  1.0   0  0.0 /usr/sbin/event_monitor
3689  3641 root     S    10868  1.0   0  0.0 /usr/sbin/event_monitor
3009     1 root     S    10864  1.0   0  0.0 /usr/sbin/mm_monitor2
3577     1 root     S    10864  1.0   0  0.0 /usr/sbin/appbattload
3013     1 root     S    10860  1.0   0  0.0 /tmp/0/0/cpm_0 -m -o -a -i 6 -f /
3015     1 root     S    10860  1.0   0  0.0 /tmp/0/1/cpm_1 -m -o -a -i 5 -f /
3715     1 root     S    10856  1.0   0  0.0 access_ctrl_daemon
3024     1 root     S    10852  1.0   1  0.0 /usr/sbin/process_monitor
3702  3641 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
3641     1 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
3690  3641 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
3691  3641 root     S    10736  1.0   1  0.0 /usr/sbin/event_monitor
3692  3641 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
3705  3641 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
2182     1 root     S    10724  1.0   0  0.0 /usr/sbin/xyz_monitor -l -e
3665     1 root     S    10724  1.0   1  0.0 /usr/sbin/svr_lal_socket
1708     1 root     S     3668  0.3   1  0.0 /usr/sbin/klogd -c 7
3684     1 root     S     3268  0.3   0  0.0 -sh
    1     0 root     S     3132  0.3   0  0.0 init      
1659     1 root     S     3000  0.3   1  0.0 /sbin/watchdog -T 10 -t 3 /dev/co
2263     1 root     S     2396  0.2   0  0.0 /usr/sbin/dropbear -p 22 -b /var/
2260     1 root     S     2316  0.2   0  0.0 mini_httpd -C /etc/mini_httpd.con
1707     1 root     S     1988  0.2   0  0.0 /usr/sbin/syslogd -f /etc/syslog.
2180     1 root     S     1692  0.1   1  0.0 /usr/sbin/cmd_agent
  850     2 root     SW<      0  0.0   0  0.0 [loop0]
    6     2 root     SW       0  0.0   0  0.0 [migration/0]
    3     2 root     SW       0  0.0   0  0.0 [ksoftirqd/0]
5699     2 root     DW       0  0.0   1  0.0 [pfe_ctrl_timer]
1467     2 root     SW<      0  0.0   0  0.0 [loop4]
  574     2 root     SW       0  0.0   0  0.0 [ocf_0]
1469     2 root     SW       0  0.0   0  0.0 [kworker/0:2]
  251     2 root     SW       0  0.0   1  0.0 [khubd]
1601     2 root     SW       0  0.0   0  0.0 [ubi_bgt6d]
  576     2 root     SW       0  0.0   0  0.0 [ocf_1]
  359     2 root     SW       0  0.0   1  0.0 [kworker/u:2]
5661     2 root     SW       0  0.0   1  0.0 [kworker/1:1]
  356     2 root     SW       0  0.0   1  0.0 [scsi_eh_1]
5652     2 root     SW       0  0.0   1  0.0 [ksoftirqd/1]
5650     2 root     SW       0  0.0   1  0.0 [migration/1]
1454     2 root     SW       0  0.0   0  0.0 [ubi_bgt4d]
1511     2 root     SW<      0  0.0   0  0.0 [loop7]
  836     2 root     SW       0  0.0   0  0.0 [ubi_bgt0d]
1496     2 root     SW       0  0.0   0  0.0 [ubi_bgt7d]
1561     2 root     SW       0  0.0   0  0.0 [ubi_bgt5d]
1574     2 root     SW<      0  0.0   1  0.0 [loop5]
1614     2 root     SW<      0  0.0   1  0.0 [loop6]
    2     0 root     SW       0  0.0   0  0.0 [kthreadd]
    4     2 root     SW       0  0.0   0  0.0 [kworker/0:0]
  353     2 root     SW       0  0.0   1  0.0 [scsi_eh_0]
   10     2 root     SW<      0  0.0   1  0.0 [cpuset]
   11     2 root     SW<      0  0.0   1  0.0 [khelper]
   12     2 root     SW       0  0.0   0  0.0 [kworker/u:1]
  222     2 root     SW       0  0.0   0  0.0 [sync_supers]
  224     2 root     SW       0  0.0   0  0.0 [bdi-default]
  225     2 root     SW<      0  0.0   1  0.0 [kblockd]
  240     2 root     SW<      0  0.0   1  0.0 [ata_sff]
  256     2 root     SW<      0  0.0   1  0.0 [md]
  275     2 root     SW<      0  0.0   1  0.0 [rpciod]
  292     2 root     SW       0  0.0   1  0.0 [kswapd0]
  293     2 root     SW       0  0.0   1  0.0 [fsnotify_mark]
  294     2 root     SW<      0  0.0   1  0.0 [nfsiod]
  295     2 root     SW<      0  0.0   1  0.0 [crypto]
  371     2 root     SW       0  0.0   1  0.0 [mtdblock0]
  376     2 root     SW       0  0.0   1  0.0 [mtdblock1]
  381     2 root     SW       0  0.0   1  0.0 [mtdblock2]
  386     2 root     SW       0  0.0   1  0.0 [mtdblock3]
  391     2 root     SW       0  0.0   1  0.0 [mtdblock4]
  396     2 root     SW       0  0.0   1  0.0 [mtdblock5]
  401     2 root     SW       0  0.0   1  0.0 [mtdblock6]
  406     2 root     SW       0  0.0   1  0.0 [mtdblock7]
  416     2 root     SW       0  0.0   1  0.0 [mtdblock8]
  421     2 root     SW       0  0.0   1  0.0 [mtdblock9]
  426     2 root     SW       0  0.0   1  0.0 [mtdblock10]
  431     2 root     SW       0  0.0   1  0.0 [mtdblock11]
  436     2 root     SW       0  0.0   1  0.0 [mtdblock12]
  441     2 root     SW       0  0.0   0  0.0 [mtdblock13]
  446     2 root     SW       0  0.0   0  0.0 [mtdblock14]
  466     2 root     SW<      0  0.0   0  0.0 [dwc_otg]
  575     2 root     SW       0  0.0   0  0.0 [ocf_ret_0]
  577     2 root     SW       0  0.0   1  0.0 [ocf_ret_1]
  841     2 root     SW       0  0.0   0  0.0 [mtdblock15]
  847     2 root     SW       0  0.0   0  0.0 [ubifs_bgt0_0]
  854     2 root     SW<      0  0.0   0  0.0 [kdmflush]
  855     2 root     SW<      0  0.0   0  0.0 [kcryptd_io]
  856     2 root     SW<      0  0.0   0  0.0 [kcryptd]
  860     2 root     SW       0  0.0   0  0.0 [jbd2/dm-0-8]
  861     2 root     SW<      0  0.0   0  0.0 [ext4-dio-unwrit]
1316     2 root     SW<      0  0.0   0  0.0 [abm_wq]
1459     2 root     SW       0  0.0   1  0.0 [mtdblock16]
1464     2 root     SW       0  0.0   0  0.0 [ubifs_bgt4_0]
1472     2 root     SW<      0  0.0   0  0.0 [kdmflush]
1473     2 root     SW<      0  0.0   0  0.0 [kcryptd_io]
1474     2 root     SW<      0  0.0   0  0.0 [kcryptd]
1477     2 root     SW       0  0.0   0  0.0 [jbd2/dm-1-8]
1478     2 root     SW<      0  0.0   0  0.0 [ext4-dio-unwrit]
1501     2 root     SW       0  0.0   1  0.0 [mtdblock17]
1506     2 root     SW       0  0.0   0  0.0 [ubifs_bgt7_0]
1515     2 root     SW<      0  0.0   1  0.0 [kdmflush]
1516     2 root     SW<      0  0.0   1  0.0 [kcryptd_io]
1517     2 root     SW<      0  0.0   1  0.0 [kcryptd]
1520     2 root     SW       0  0.0   1  0.0 [jbd2/dm-2-8]
1521     2 root     SW<      0  0.0   1  0.0 [ext4-dio-unwrit]
1566     2 root     SW       0  0.0   0  0.0 [mtdblock18]
1571     2 root     SW       0  0.0   0  0.0 [ubifs_bgt5_0]
1578     2 root     SW<      0  0.0   1  0.0 [kdmflush]
1579     2 root     SW<      0  0.0   1  0.0 [kcryptd_io]
1580     2 root     SW<      0  0.0   1  0.0 [kcryptd]
1583     2 root     SW       0  0.0   0  0.0 [jbd2/dm-3-8]
1584     2 root     SW<      0  0.0   0  0.0 [ext4-dio-unwrit]
1606     2 root     SW       0  0.0   1  0.0 [mtdblock19]
1611     2 root     SW       0  0.0   1  0.0 [ubifs_bgt6_0]
1618     2 root     SW<      0  0.0   0  0.0 [kdmflush]
1619     2 root     SW<      0  0.0   0  0.0 [kcryptd_io]
1620     2 root     SW<      0  0.0   0  0.0 [kcryptd]
1623     2 root     SW       0  0.0   0  0.0 [jbd2/dm-4-8]
1624     2 root     SW<      0  0.0   0  0.0 [ext4-dio-unwrit]
5651     2 root     SW       0  0.0   1  0.0 [kworker/1:0]
===

CPU1 offline
===
~ # top -b -d20
Mem: 180940K used, 832352K free, 0K shrd, 540K buff, 53124K cached
CPU:  0.0% usr  7.4% sys  0.0% nic 92.5% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 0.45 0.87 0.84 1/124 12368
  PID  PPID USER     STAT   VSZ %MEM CPU %CPU COMMAND
12368  3684 root     R     3132  0.3   0  7.4 top -b -d20
3645     1 root     S    13708  1.3   1  0.0 /usr/sbin/hpav_mgr
1680     1 root     S    11752  1.1   0  0.0 /usr/sbin/cmld
2190     1 root     S <  11156  1.1   0  0.0 /usr/sbin/dnrd
3709     1 root     S    11036  1.0   0  0.0 /usr/sbin/cron
2239     1 root     S    10916  1.0   0  0.0 /usr/sbin/udhcpd /var/udhcpd.conf
1682     1 root     S    10872  1.0   0  0.0 /usr/sbin/service_ctrld
3703  3641 root     S    10868  1.0   0  0.0 /usr/sbin/event_monitor
3704  3641 root     S    10868  1.0   0  0.0 /usr/sbin/event_monitor
3693  3641 root     S    10868  1.0   0  0.0 /usr/sbin/event_monitor
3689  3641 root     S    10868  1.0   0  0.0 /usr/sbin/event_monitor
3009     1 root     S    10864  1.0   0  0.0 /usr/sbin/mm_monitor2
3577     1 root     S    10864  1.0   0  0.0 /usr/sbin/appbattload
3013     1 root     S    10860  1.0   0  0.0 /tmp/0/0/cpm_0 -m -o -a -i 6 -f /
3015     1 root     S    10860  1.0   0  0.0 /tmp/0/1/cpm_1 -m -o -a -i 5 -f /
3715     1 root     S    10856  1.0   0  0.0 access_ctrl_daemon
3024     1 root     S    10852  1.0   0  0.0 /usr/sbin/process_monitor
3702  3641 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
3641     1 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
3690  3641 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
3691  3641 root     S    10736  1.0   1  0.0 /usr/sbin/event_monitor
3692  3641 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
3705  3641 root     S    10736  1.0   0  0.0 /usr/sbin/event_monitor
2182     1 root     S    10724  1.0   0  0.0 /usr/sbin/xyz_monitor -l -e
3665     1 root     S    10724  1.0   1  0.0 /usr/sbin/svr_lal_socket
1708     1 root     S     3668  0.3   0  0.0 /usr/sbin/klogd -c 7
3684     1 root     S     3268  0.3   0  0.0 -sh
    1     0 root     S     3132  0.3   0  0.0 init      
1659     1 root     S     3000  0.3   0  0.0 /sbin/watchdog -T 10 -t 3 /dev/co
2263     1 root     S     2396  0.2   0  0.0 /usr/sbin/dropbear -p 22 -b /var/
2260     1 root     S     2316  0.2   0  0.0 mini_httpd -C /etc/mini_httpd.con
1707     1 root     S     1988  0.2   0  0.0 /usr/sbin/syslogd -f /etc/syslog.
2180     1 root     S     1692  0.1   1  0.0 /usr/sbin/cmd_agent
  850     2 root     SW<      0  0.0   0  0.0 [loop0]
    6     2 root     SW       0  0.0   0  0.0 [migration/0]
    3     2 root     SW       0  0.0   0  0.0 [ksoftirqd/0]
1467     2 root     SW<      0  0.0   0  0.0 [loop4]
1469     2 root     SW       0  0.0   0  0.0 [kworker/0:2]
  574     2 root     SW       0  0.0   0  0.0 [ocf_0]
  251     2 root     SW       0  0.0   1  0.0 [khubd]
1601     2 root     SW       0  0.0   0  0.0 [ubi_bgt6d]
  576     2 root     SW       0  0.0   0  0.0 [ocf_1]
  359     2 root     SW       0  0.0   0  0.0 [kworker/u:2]
  356     2 root     SW       0  0.0   1  0.0 [scsi_eh_1]
1454     2 root     SW       0  0.0   0  0.0 [ubi_bgt4d]
1511     2 root     SW<      0  0.0   0  0.0 [loop7]
  836     2 root     SW       0  0.0   0  0.0 [ubi_bgt0d]
1496     2 root     SW       0  0.0   0  0.0 [ubi_bgt7d]
1561     2 root     SW       0  0.0   0  0.0 [ubi_bgt5d]
1574     2 root     SW<      0  0.0   1  0.0 [loop5]
1614     2 root     SW<      0  0.0   1  0.0 [loop6]
    2     0 root     SW       0  0.0   0  0.0 [kthreadd]
    4     2 root     SW       0  0.0   0  0.0 [kworker/0:0]
  353     2 root     SW       0  0.0   1  0.0 [scsi_eh_0]
   10     2 root     SW<      0  0.0   1  0.0 [cpuset]
   11     2 root     SW<      0  0.0   1  0.0 [khelper]
   12     2 root     SW       0  0.0   0  0.0 [kworker/u:1]
  222     2 root     SW       0  0.0   0  0.0 [sync_supers]
  224     2 root     SW       0  0.0   0  0.0 [bdi-default]
  225     2 root     SW<      0  0.0   1  0.0 [kblockd]
  240     2 root     SW<      0  0.0   1  0.0 [ata_sff]
  256     2 root     SW<      0  0.0   1  0.0 [md]
  275     2 root     SW<      0  0.0   1  0.0 [rpciod]
  292     2 root     SW       0  0.0   1  0.0 [kswapd0]
  293     2 root     SW       0  0.0   1  0.0 [fsnotify_mark]
  294     2 root     SW<      0  0.0   1  0.0 [nfsiod]
  295     2 root     SW<      0  0.0   1  0.0 [crypto]
  371     2 root     SW       0  0.0   1  0.0 [mtdblock0]
  376     2 root     SW       0  0.0   1  0.0 [mtdblock1]
  381     2 root     SW       0  0.0   1  0.0 [mtdblock2]
  386     2 root     SW       0  0.0   1  0.0 [mtdblock3]
  391     2 root     SW       0  0.0   1  0.0 [mtdblock4]
  396     2 root     SW       0  0.0   1  0.0 [mtdblock5]
  401     2 root     SW       0  0.0   1  0.0 [mtdblock6]
  406     2 root     SW       0  0.0   1  0.0 [mtdblock7]
  416     2 root     SW       0  0.0   1  0.0 [mtdblock8]
  421     2 root     SW       0  0.0   1  0.0 [mtdblock9]
  426     2 root     SW       0  0.0   1  0.0 [mtdblock10]
  431     2 root     SW       0  0.0   1  0.0 [mtdblock11]
  436     2 root     SW       0  0.0   1  0.0 [mtdblock12]
  441     2 root     SW       0  0.0   0  0.0 [mtdblock13]
  446     2 root     SW       0  0.0   0  0.0 [mtdblock14]
  466     2 root     SW<      0  0.0   0  0.0 [dwc_otg]
  575     2 root     SW       0  0.0   0  0.0 [ocf_ret_0]
  577     2 root     SW       0  0.0   1  0.0 [ocf_ret_1]
  841     2 root     SW       0  0.0   0  0.0 [mtdblock15]
  847     2 root     SW       0  0.0   0  0.0 [ubifs_bgt0_0]
  854     2 root     SW<      0  0.0   0  0.0 [kdmflush]
  855     2 root     SW<      0  0.0   0  0.0 [kcryptd_io]
  856     2 root     SW<      0  0.0   0  0.0 [kcryptd]
  860     2 root     SW       0  0.0   0  0.0 [jbd2/dm-0-8]
  861     2 root     SW<      0  0.0   0  0.0 [ext4-dio-unwrit]
1316     2 root     SW<      0  0.0   0  0.0 [abm_wq]
1459     2 root     SW       0  0.0   1  0.0 [mtdblock16]
1464     2 root     SW       0  0.0   0  0.0 [ubifs_bgt4_0]
1472     2 root     SW<      0  0.0   0  0.0 [kdmflush]
1473     2 root     SW<      0  0.0   0  0.0 [kcryptd_io]
1474     2 root     SW<      0  0.0   0  0.0 [kcryptd]
1477     2 root     SW       0  0.0   0  0.0 [jbd2/dm-1-8]
1478     2 root     SW<      0  0.0   0  0.0 [ext4-dio-unwrit]
1501     2 root     SW       0  0.0   1  0.0 [mtdblock17]
1506     2 root     SW       0  0.0   0  0.0 [ubifs_bgt7_0]
1515     2 root     SW<      0  0.0   1  0.0 [kdmflush]
1516     2 root     SW<      0  0.0   1  0.0 [kcryptd_io]
1517     2 root     SW<      0  0.0   1  0.0 [kcryptd]
1520     2 root     SW       0  0.0   1  0.0 [jbd2/dm-2-8]
1521     2 root     SW<      0  0.0   1  0.0 [ext4-dio-unwrit]
1566     2 root     SW       0  0.0   0  0.0 [mtdblock18]
1571     2 root     SW       0  0.0   0  0.0 [ubifs_bgt5_0]
1578     2 root     SW<      0  0.0   1  0.0 [kdmflush]
1579     2 root     SW<      0  0.0   1  0.0 [kcryptd_io]
1580     2 root     SW<      0  0.0   1  0.0 [kcryptd]
1583     2 root     SW       0  0.0   0  0.0 [jbd2/dm-3-8]
1584     2 root     SW<      0  0.0   0  0.0 [ext4-dio-unwrit]
1606     2 root     SW       0  0.0   1  0.0 [mtdblock19]
1611     2 root     SW       0  0.0   1  0.0 [ubifs_bgt6_0]
1618     2 root     SW<      0  0.0   0  0.0 [kdmflush]
1619     2 root     SW<      0  0.0   0  0.0 [kcryptd_io]
1620     2 root     SW<      0  0.0   0  0.0 [kcryptd]
1623     2 root     SW       0  0.0   0  0.0 [jbd2/dm-4-8]
1624     2 root     SW<      0  0.0   0  0.0 [ext4-dio-unwrit]
===

   

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
12 [报告]
发表于 2015-01-22 17:52 |只看该作者
这得串串代码才能解释清楚, 我记得内核专门有个sched_class来处理CPU迁移进程的调度问题
应该是那个sched_class 还没有被触发。 得串代码看触发的时机, 不过很可能是因为进程还在睡眠导致的。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
13 [报告]
发表于 2015-01-23 08:33 |只看该作者
回复 11# jian9158101

都跟你说了原理了,还是不相信。那就告诉你测试方案。

你现在的测试不能说明任何问题,因为你的进程可能就是需要sleep了,你自己写个进程while(1)的,一直running的状态。taskset到cpu1上,然后offline cpu1,看看进程是不是正常在cpu0上running的状态。

   

论坛徽章:
0
14 [报告]
发表于 2015-01-23 09:04 |只看该作者
回复 13# 瀚海书香

有道理  非常感谢   我试试看


   

论坛徽章:
0
15 [报告]
发表于 2015-01-23 09:05 |只看该作者
回复 12# gaojl0728
谢谢  我再验证看下


   

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
16 [报告]
发表于 2015-01-23 13:35 |只看该作者
回复 15# jian9158101


我还是花了点时间串了下代码, CPU offline的时候会migrate task 到别的CPU,  但是并不是migrate全部的task, 只是迁移了在当前offline的CPU的运行队列上的任务,也就是R状态的任务会马上迁移, 这点很重要, 这能够解释为什么CPU1 offline之后为什么还有很多S和D状态task 依然在CPU1上。
代码在migrate_tasks

另外一点是 S和D状态的进程从睡眠状态呗**的时候, 内核会重新选择一个最闲的CPU来运行,不过这跟CPU offline没有直接关系,这是内核**任务的逻辑。
代码在try_to_wake_up

论坛徽章:
0
17 [报告]
发表于 2015-01-23 13:59 |只看该作者
回复 16# gaojl0728
感谢!
另外请问,如果是之前S状态的task,未被迁移至CPU0,那这些睡在CPU1上面的Task还有机会被**吗?


   

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
18 [报告]
发表于 2015-01-23 14:06 |只看该作者
回复 17# jian9158101

    会啊, 就是我说的第二点啊, 当他们被huan xing 的时候内核会重新选择一个最闲的CPU来运行, 因为CPU1已经offline, 内核会选择其他的CPU也就是CPU0来运行
这个时候你再用top看就能看到他们已经在CPU0上了。

    “另外一点是 S和D状态的进程从睡眠状态呗**的时候, 内核会重新选择一个最闲的CPU来运行,不过这跟CPU offline没有直接关系,这是内核**任务的逻辑。
代码在try_to_wake_up”

论坛徽章:
0
19 [报告]
发表于 2015-01-23 14:57 |只看该作者
回复 18# gaojl0728
这跟我遇到的问题并做的测试不一致,所以比较奇怪,我来详细描述下:
1. 板子起来后挂载某MTD为UBIFS,而UBIFS会有内核线程来协同工作,见如下Log
===
[   56.533388] UBI: attaching mtd7 to ubi7
[   56.641140] UBI: scanning is finished
[   56.644824] UBI: empty MTD device detected
[   56.700290] UBI: attached mtd7 (name "**", size 128 MiB) to ubi7
[   56.706369] UBI: PEB size: 4194304 bytes (4096 KiB), LEB size: 4161536 bytes
[   56.713453] UBI: min./max. I/O unit sizes: 16384/16384, sub-page size 16384
[   56.720446] UBI: VID header offset: 16384 (aligned 16384), data offset: 32768
[   56.727606] UBI: good PEBs: 32, bad PEBs: 0, corrupted PEBs: 0
[   56.733465] UBI: user volume: 0, internal volumes: 1, max. volumes count: 128
[   56.740634] UBI: max/mean erase counter: 0/0, WL threshold: 256, image sequence number: 1338532295
[   56.749623] UBI: available PEBs: 21, total reserved PEBs: 11, PEBs reserved for bad PEB handling: 7
[   56.758722] UBI: background thread "ubi_bgt7d" started, PID 1492
===
2. 此内核线程挂在CPU1上运行,当我将CPU1 down掉后,此内核线程还是睡在CPU1上
3. 当我去操作MTD7时,发生UBI读写错误,如下:
===
[   96.844922] UBIFS error : ubifs_read_node: bad node type (37 but expected 1)
[   96.852976] UBIFS error : ubifs_read_node: bad node at LEB 18:1133512, LEB mapping status 1
[   96.862284] UBIFS error : do_readpage: cannot read page 10413 of inode 65, error -22
[   99.123916] UBIFS error : ubifs_read_node: bad node type (21 but expected 9)
[   99.131945] UBIFS error : ubifs_read_node: bad node at LEB 9:802432, LEB mapping status 1
[   99.141085] UBIFS error : do_readpage: cannot read page 11309 of inode 65, error -22
[   99.152108] UBIFS error : ubifs_read_node: bad node type (21 but expected 9)
[   99.160156] UBIFS error : ubifs_read_node: bad node at LEB 9:802624, LEB mapping status 1
[   99.169299] UBIFS error : do_readpage: cannot read page 11317 of inode 65, error -22
[   99.178020] UBIFS error : ubifs_read_node: bad node type (21 but expected 9)
[   99.185996] UBIFS error : ubifs_read_node: bad node at LEB 9:802624, LEB mapping status 1
[   99.195145] UBIFS error : do_readpage: cannot read page 11318 of inode 65, error -22
===
4. 而如果CPU1在online状态下,对此MTD操作没有任何问题


   

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
20 [报告]
发表于 2015-01-23 15:50 |只看该作者
回复 19# jian9158101


    你是说CPU1 offline之后,内核线程ubi_bgt7d一直在睡眠不会被**?
有可能是**的条件没有满足?

我看了下ubi_bgt7d线程就是在这里睡眠的,
                if (list_empty(&ubi->works) || ubi->ro_mode ||
                    !ubi->thread_enabled || ubi_dbg_is_bgt_disabled(ubi)) {
                        set_current_state(TASK_INTERRUPTIBLE);
                        spin_unlock(&ubi->wl_lock);
                        schedule();
                        continue;
                }

**的地方是在这里,
static void __schedule_ubi_work(struct ubi_device *ubi, struct ubi_work *wrk)
{
        spin_lock(&ubi->wl_lock);
        list_add_tail(&wrk->list, &ubi->works);
        ubi_assert(ubi->works_count >= 0);
        ubi->works_count += 1;
        if (ubi->thread_enabled && !ubi_dbg_is_bgt_disabled(ubi))
                wake_up_process(ubi->bgt_thread);
        spin_unlock(&ubi->wl_lock);
}

你可以看看是不是__schedule_ubi_work有些条件不满足一直没有**ubi_bgt7d呢?
看起来得调试一下,光说现象不好定位原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP