C++ 如何编写C或C++;作为内存和CPU周期填充的程序?

C++ 如何编写C或C++;作为内存和CPU周期填充的程序?,c++,c,unix,memory,cpu-usage,C++,C,Unix,Memory,Cpu Usage,例如,我想测试一个程序的内存管理功能(例如,程序名为director) 如果其他进程占用太多内存,而director无法运行的内存太少,会发生什么情况?导演表现如何 当director运行时,如果其他程序使用了太多的CPU周期,会发生什么情况 如果其他程序使用的内存在一段时间后被释放,会发生什么?director如何声明内存并开始满负荷工作。 等等 我将在Unix机器上做这些实验。一种方法是限制进程可用的内存量,但是没有控制CPU周期利用率的好方法 我有另一个想法 < /P> 我需要一些关于如

例如,我想测试一个程序的内存管理功能(例如,程序名为director

  • 如果其他进程占用太多内存,而director无法运行的内存太少,会发生什么情况?导演表现如何
  • 当director运行时,如果其他程序使用了太多的CPU周期,会发生什么情况
  • 如果其他程序使用的内存在一段时间后被释放,会发生什么?director如何声明内存并开始满负荷工作。 等等
  • 我将在Unix机器上做这些实验。一种方法是限制进程可用的内存量,但是没有控制CPU周期利用率的好方法

    我有另一个想法<如果我写一些C或C++程序,作为一个动态内存和CPU填充程序,那就是没有什么有用的东西,但是不管内存还是CPU周期都会消耗掉吗?< /强> < /P>
    • 我需要一些关于如何构建这样一个计划的想法。我需要对使用的内存和CPU进行动态(运行时)控制
    • 我认为创建大量线程将是阻塞CPU周期的好方法。是这样吗
    我可以使用更好的方法吗?


    欢迎您提出任何想法/建议/意见。

    如果您只有一个内核,这足以给CPU带来压力:

    while ( true ) {
       x++;
    } 
    
    如果有很多内核,那么每个内核需要一个线程

    你可以通过增加一些睡眠来让它变饿


    至于内存,只需分配很多。

    动态内存控制,您可以只分配或释放一定大小的缓冲区,以使用或释放更多或更少的内存。至于CPU利用率,您必须获得一个操作系统函数来检查这一点,并定期检查它,看看是否需要做有用的工作。

    这种设计有几个问题:

  • 在虚拟内存系统中,内存大小实际上是无限的。(好的,它受到硬盘的限制…)在实践中,系统通常在耗尽备份存储之前就耗尽了地址空间——而地址空间是每个进程的资源
  • 任何合理的(非实时的)操作系统都会限制进程相对于其他进程可以使用的CPU时间和内存
  • 更重要的是,我不明白你为什么要这么做。

    Stress是一个专门为POSIX系统设计的简单工作负载生成器。它对系统施加了可配置的CPU、内存、I/O和磁盘压力。它是用C编写的,是根据GPLv2许可的自由软件


    您寻求的功能与“测试工具”的功能集重叠。所以也请检查。

    主要部分是动态控制,我需要能够动态增加或减少CPU和内存利用率。@Billy:我尝试使用的进程具有一些复杂的内存管理功能,这些功能在高压力(意味着低内存、CPU周期)情况下应该以某种方式运行。这就是为什么我要这么做。我试图在问题本身中解释这一点。@Lazer:那么你必须使用类似于应用程序验证程序的东西。简单地在系统上消耗内存不会将内存压力放在目标进程上,因为内存到C或C++程序与物理内存不一样。感谢OBRUT链接,BTW.与我想要的非常类似,但它只在Windows上工作。@ LasZ:你应该在这个问题中指定你的平台;有些人可能会对第二点提出质疑。例如,任何RTO都应该为我提供指定何时运行哪个进程/线程的能力。如果我不能保证一个进程可以不间断地运行,那么实时性并不难。至于原因,在政府工作中,有备用RAM和CPU利用率要求是很常见的(因此他们知道他们有空间安装小型软件MOD)。当然,在现代消费者操作系统上,你是对的,它没有多大意义。谢谢@Henj,这个描述正是我需要的。我将检查是否可以在运行时更改分配。或者修改源代码以执行此操作。@Lazer:如果它不支持运行时调整,您可以使用标准的*NIX方法。启动一堆进程,每个进程消耗一些CPU和内存。要释放一些资源,就要消除一些压力过程。要让他们再次忙碌,请再次启动相应的压力过程。