我写了一个C++程序,对几个算法做了一些基准测试。其中一些算法正在使用其他库进行计算。这些外部库(我无法控制)使用多线程,这使得很难获得适当的基准测试(有些算法是单线程的,有些是多线程的)。
因此,在进行基准测试时,我希望将线程数限制为1。我是否可以在Linux中启动一个程序,并告诉它最多使用1个线程,而不是使用外部库中的默认线程数(等于内核数量)?
发布于 2014-06-14 07:17:21
从操作系统的角度来看,我不确定您所要求的是不是可能的,操作系统能做什么?当请求下一个线程时返回失败?
我会在库文档中搜索,它们可能会提供它们正在使用的线程数量的配置值。
Alternatively,您可以使用taskset command执行processor affinity
这并不完全符合您的要求,但它可以确保您的程序将在给定的CPU (或一组CPU)上运行。因此,无论产生多少线程,程序在任何时候都将使用最多一个CPU (或指定的CPU数量),因此有效并行度将受到控制。
或者由@goocreations的评论触发的x2 ...欺骗程序相信它们有不同数量的CPU的一种方法是在虚拟机中运行它们(例如VirtualBox)
https://stackoverflow.com/questions/24217413
复制相似问题