当前位置: 首页 > news >正文

ps做 网站教程免费企业名录

ps做 网站教程,免费企业名录,做网站技巧,app软件开发成本说明 理论上#xff1a;不管IC是单核还是多核#xff0c;只要watchdog有被循环feed#xff0c;就不会触发超时重启#xff0c;因此watchdog在SMP机制下的多核环境显得比较宽松#xff0c;只要任意核存活#xff08;喂狗#xff09;就不会重启设备。 实际情况 有客户反…说明 理论上不管IC是单核还是多核只要watchdog有被循环feed就不会触发超时重启因此watchdog在SMP机制下的多核环境显得比较宽松只要任意核存活喂狗就不会重启设备。 实际情况 有客户反馈多核环境下SMP机制管理有核hang住了但是设备没有重启。在SMP机制管理的8核arm平台上实测现象 有核crash特意使核上跑的程序crashSMP能检测到并且所有核都会被stopwatchdog能重启设备。有核hang住特意使核上跑的程序hang住设备会非常卡smp机制中的调度会每隔一段时间打印一次timeout但是由于主核正常喂狗正常不会触发watchdog重启系统如下 [ 433.562934] rcu: INFO: rcu_sched detected stalls on CPUs/tasks: [ 433.568883] rcu: 1-...0: (16 ticks this GP) idlee3a/0/0x3 softirq98/98 fqs10498 [ 433.576660] (detected by 0, t21007 jiffies, g-935, q16) [ 433.582255] Task dump for CPU 1: [ 433.585495] task:swapper/1 state:R running task stack:15152 pid: 0 ppid: 1 flags:0x0000000a [ 433.595460] Call trace: [ 433.597917] __switch_to0xb8/0xe8 [ 433.601332] 0xffffff8100130c00根据一些测试现象推测有核卡住设备非常卡是因为smp调度时调度过程是阻塞的但是有超时smp调度过程就会卡住很久只有超时后其它进程才能得到调度将触发smp调度的操作放到wdt驱动的喂狗函数中这样就会触发watchdog重启系统smp调度阻塞住喂狗了。 结论 IC生产无法确保每个核都是一样稳定如果多核IC中有少数核稳定性稍微差点可能会出现部分核hang住因此需要watchdog来检测这种情况并重启。 实现 同构多核使用SMP机制管理下kenerl启动之前只有主核在运行kernel启动过程中再由kernel bringup其它核因此kernel运行前的固件uboot等不需要做检测。 SMP机制下多核确活机制严格模式 在多核SMP管理环境下确认多核是否alive只要任意核hang住重启设备。 思路 通过SMP机制发送核间中断给每个核每个核收到中断后将一个全局CPU 位图变量打上标志表示核正在运行。发送核间中断让每个核执行同一个函数 // 每个核都会运行该函数 static void cpu_alive(void *passed_regs) {... }smp_call_function(cpu_alive, NULL, 0); smp_wmb();第一版做法每次喂狗前发送SMP调度请求等待所有核运行完成。 static cpumask_t cpus_alive CPU_MASK_NONE;#ifdef CONFIG_SMP static void cpu_alive(void *passed_regs) {int cpu smp_processor_id();pr_debug(cpu[%d] setmask \n, cpu);cpumask_set_cpu(cpu, cpus_alive); } #endif// watchdog驱动喂狗函数 static int dw_wdt_ping(struct watchdog_device *wdd) { struct dw_wdt *dw_wdt to_dw_wdt(wdd);#ifdef CONFIG_SMPunsigned int msecs;unsigned int ncpus;cpus_alive CPU_MASK_NONE;ncpus num_online_cpus() - 1;pr_debug(Sending IPI to other cpus...\n);smp_call_function(cpu_alive, NULL, 0);smp_wmb();// 阻塞1s 等待所有核执行完成msecs 1000; // 1swhile ((cpumask_weight(cpus_alive) ncpus) (--msecs 0)) {cpu_relax();mdelay(1);}if (cpumask_weight(cpus_alive) ncpus) #endifwritel(WDOG_COUNTER_RESTART_KICK_VALUE, dw_wdt-regs WDOG_COUNTER_RESTART_REG_OFFSET);return 0; }问题 阻塞1s等待所有核执行完成如果存在核执行超时了会导致误判。如果将阻塞时间拉长喂狗时间和wdt timeout时间需要空出该时间。 新版本每次喂狗前检查上一次喂狗后发送SMP调度请求后的CPU 位图数据喂狗再发送一次SMP调度请求。 static cpumask_t cpus_alive CPU_MASK_NONE;#ifdef CONFIG_SMP static void cpu_alive(void *passed_regs) { int cpu smp_processor_id();pr_debug(cpu[%d] setmask \n, cpu);cpumask_set_cpu(cpu, cpus_alive); } #endifstatic int dw_wdt_ping(struct watchdog_device *wdd) {struct dw_wdt *dw_wdt to_dw_wdt(wdd);static int isFirst 1;#ifdef CONFIG_SMPunsigned int ncpus;ncpus num_online_cpus() - 1;if ((isFirst 1) || cpumask_weight(cpus_alive) ncpus) { #endifwritel(WDOG_COUNTER_RESTART_KICK_VALUE, dw_wdt-regs WDOG_COUNTER_RESTART_REG_OFFSET);#ifdef CONFIG_SMPisFirst 0;cpus_alive CPU_MASK_NONE;smp_call_function(cpu_alive, NULL, 0);smp_wmb();} #endifreturn 0; }好处等待所有核执行SMP请求和间隔喂狗并行起来了不必像串行一样多花一个等待时间。
http://www.yutouwan.com/news/206556/

相关文章:

  • 付费网站做推广哪个好手机网站与app
  • 没有公司做网站可以吗山东经济建设网站
  • 株洲企业网站建设建设银行人力资源系统网站怎么进
  • 国外高大上设计网站做背景网站
  • 外综服务平台哪里做网站温州网站建设温州网站制作
  • 建筑设计参考网站网站备案添加APP备案
  • 做推广网站wordpress首页自定义
  • 视频网站开发防止盗链网站制作学习
  • 网站中二级导航栏怎么做深圳网站seo哪家快
  • 帝国cms更改网站ico昆山人才网官网
  • 建设部门的网站wordpress 视频图片网站
  • 怎样优化排名自己网站拼多多如何无货源开店
  • 做设计有哪些免费网站优惠券精选网站怎么做
  • logaster在线制作logoseo网站推广首页排名
  • 可以做任务的网站有哪些wordpress 改社交图标
  • 本地的网站建设拓者设计吧首页
  • 手机网站建设实验报告怎么搭建自己的博客网站
  • 广州企业网站建设电话镇江网站搜索排名
  • 模板网站不利于seo吗wordpress完整替换网址
  • 岳阳网站建设一站式服务个人做搜索引擎网站违法吗
  • 门户网站建设工作网站建设福永附近网络公司
  • 哪些网站是503错误代码怎样制作图片网站
  • 俄文网站开发地点网站建设百度帖吧
  • 亚马逊跨境电商官方网站百度地图在线查询
  • 国外网站免费dns盐城网站设计
  • 免费微网站与公众号平台对接男女性男女直接做的视频网站
  • 盛泽建设局网站做网站上传服务器吗
  • 江门cms模板建站网站开发公司内部数据字典
  • 东莞做网站的联系电网站开发公司知乎
  • 物流网站模板下载wordpress权利插件