首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试看门狗的好方法是什么(脚本或命令故意过载系统)

测试看门狗的好方法是什么(脚本或命令故意过载系统)
EN

Unix & Linux用户
提问于 2022-08-25 23:36:41
回答 2查看 319关注 0票数 1

我有一个硬件看门狗,有什么好的方法来测试它的实际工作呢?是否有一个标准的脚本来将我的系统设置为一个无限循环,以占用所有的资源或诸如此类的东西来触发硬件看门狗?

EN

回答 2

Unix & Linux用户

发布于 2022-08-26 00:24:10

如果您想测试该看门狗是否正常工作,并且您正在用户空间中运行一个看门狗进程(相对于运行在内核线程中的内核看门狗),只需终止或停止该进程。这将模拟一个没有响应的系统。注意,硬件看门狗不是硬件重置定时器的狗。硬件看门狗是在硬件中实现定时器的一种。无论哪种方式,它都是定期重置看门狗定时器的软件。

另一种测试看门狗是否武装但不活动的典型方法是简单地打开它:

代码语言:javascript
复制
# cat >> /dev/watchdog

这假设没有运行监视狗进程。一旦打开,看门狗计时器就会启动。因为cat仅仅打开了它,不会向它写任何东西(它正在从stdin读取,等待永远不会出现的输入),所以计时器最终会过期,系统会重置。

即使在沉重的负载下,系统通常也不会锁定到看门狗超时的程度。该看门狗的设计是重新启动系统时,它变得无法恢复,或至少不能恢复一定的时间。这可能是由硬锁引起的,例如内存压力极高或设备上的交换目标阻塞。

计算机有有限数量的CPU核。忽略SMT,每个核心只能在任何给定时刻运行一个进程。为了防止进程占用太多时间,内核调度程序指定时间间隔。每个进程都可以在其时间间隔期间运行,但是一旦它过期(或者进程自动生成或执行了阻塞系统调用),内核将自动抢占它并开始运行另一个进程。这种设计意味着一个进程不能仅仅通过使用大量的CPU就停止另一个进程的运行。只要内核是健康的,情况就是如此。

在用户空间中运行的进程总是可以被内核抢占。它无法防止这种情况发生。它可以决定耗尽整个时间,从而保证系统将处于100%的负载状态,但它不能阻止内核给其他进程一个回合。但是,如果由于页面错误、信号、syscall等原因在内核空间中运行,导致内核无法满足请求并返回用户空间,则进程将被锁定,调度程序将无法运行。如果这种情况发生在所有内核上,监督狗将没有机会运行,计时器最终会超时,在进程中重置系统。

票数 0
EN

Unix & Linux用户

发布于 2022-08-25 23:47:03

过去,perl -e '1 while 1'会让一个系统很忙,但是对于一个有64个内核的多处理器系统来说,这是一个很大的麻烦,而且不会真正地锻炼内存。一种方法(在linux上)是在内存不足的杀手之前获得进程创建,因此系统最终会自己崩溃。一种方法是在单个进程中分配尽可能多的内存,生成一组工作线程,并让这些线程对所有分配的内存进行随机内存访问。然后有几个shell循环试图启动许多这样的进程,所有这些都消耗了尽可能多的内存。有人可能已经按照这些思路写了一个脚本。

https://github.com/thrig/scripts/blob/master/bench/usemem.c

它使用一个自定义的RNG,它可能会被线程中的rand()调用所取代。已经有一段时间没有在Linux上编译它了,所以为了安抚Linux上的编译器,各种-D定义可能是必要的。

票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/714910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档