Articles of testing

如何确保数据到达存储器,绕过内存/caching/缓冲IO?

在Linux中,如何确保我的系统write()调用(和类似的write-IO调用/变体)到达非易失性存储,绕过内存/caching/缓冲IO?

如何让我的系统支持纳秒精度

当我从这个页面运行代码high_precision_timer时 ,我知道我的系统只支持微秒精度。 根据该文件, cout << chrono :: high_resolution_clock :: period :: den << endl; 请注意,并不能保证每秒有多less滴答,只有最高可用。 因此,我们要做的第一件事是通过打印一秒钟多less次来获得精度。 我的系统每秒提供1000000个滴答,这是一个微妙的精度。 我也得到完全相同的价值每秒1000000蜱。 这意味着我的系统也支持微秒精度。 每次我运行任何程序,我总是得到价值xyz微秒和xyz000 nanosec。 我认为上述不支持我的系统nanosec可能是原因。 有没有办法让我的系统nanosec支持?

lmbench如何用C测量L1和L2caching的等待时间? (在手册中不能理解说明)

我想了解lmbench如何测量L1,L2和主内存的延迟。 lat_mem_rd的手册页提到了这个方法,但是我不清楚: 基准运行为两个嵌套循环。 外部循环是步幅大小。 内部循环是数组大小。 对于每个arrays大小,基准testing会创build一个指向前进一步的指针环。 遍历数组是由 p =(char **)* p; 在for循环中(for循环的头部不重要;循环是展开循环1000加载长)。 循环完成一百万次加载后停止。 你如何“创造一个指向前进的指针环”? 这是不是意味着如果stride的大小是128字节,你需要build立一个链接列表,每个节点与前一个节点相距128字节? malloc只是返回一些随机的免费内存,所以我不明白在C中是如何可能的。而在这段代码中,我总是会遇到分段错误。 (testing过了,p应该用什么初始化?) SO( 链接 )上有一个类似的线程,第一个答案讨论了这个问题,但是它没有提到如何使用链表来描述链表。 我也看了看源代码本身(lat_mem_rd.c),但是也不能理解这个。 任何帮助表示赞赏。

寻找一种准确的方法来微观testing用C ++编写的并在Linux / OSX上运行的小代码path

我正在寻找一些非常基本的微型基准testing,例如我用C ++编写的小型代码path,比如紧密循环。 我在Linux和OSX上运行,并使用GCC。 什么设施有亚毫秒的精度? 我正在考虑多次运行代码path的简单testing(几千万?)会给我足够的一致性,以获得良好的阅读。 如果有人知道更好的方法,请随时提出build议。

C / asm程序在由非特权用户运行时对Linux有什么危害?

我一直在想一个场景,让用户(可以是任何人,可能是坏的意图)提交在Linux PC上运行的代码(我们称之为基准节点)。 目标是为单线程例程创build一种自动化的基准testing环境。 假设一个网站向代理发布一些代码。 这个代理把这个代码交给基准节点,基准节点只有一个到代理的以太网连接,而不是互联网本身。 如果让一个用户在C / ASM代码上运行基准节点,会面临什么样的安全挑战? 做出以下假设: 该程序作为非特权用户运行 代理将有机会杀死基准节点上的进程(例如以无限循环为例) 代理能够重新启动基准节点(如果它回复…) 那么,这个用户空间程序实际上可能会使操作系统崩溃,还是使代理不可用? 通过汇编,程序员可以基本上做他想做的任何事情(例如操纵堆栈指针),我想知道Linux在这方面的限制/强大。 我也知道进程可能需要与其他进程(shm)共享内存区域,这也可能在这里起作用。 任何有关这个问题的文献或文章都非常受欢迎。 沙盒解决scheme也可能是有趣的,但重要的是,CPU必须执行它在基准testing期间的100%的能力(至less在基准testing的核心上)。

由于套接字失败,围困中止

我遇到这个问题,同时试图从Mac OS X 10.8.3围攻下面的cmd。 siege -d1 -c 20 -t2m -i -f -r10 urls.txt Siege的输出如下: ** SIEGE 2.74 ** Preparing 20 concurrent users for battle. The server is now under siege… done. siege aborted due to excessive socket failure; you can change the failure threshold in $HOME/.siegerc Transactions: 0 hits Availability: 0.00 % Elapsed time: 27.04 […]

Linux基准testing工具

我被要求评估一个新的供应商的计算系统,pipe理层要求我不使用我们现有的任何软件来评估平台(不pipe你信不信,有一些合理的理由)。 无论如何,我已经开始尝试阅读服务器级计算机的有意义的基准testing程序,但是并没有给我们留下深刻的印象。 我试图展示原始计算能力和内存I / O吞吐量。 任何build议,我应该运行有意义的testing? – 我将可以访问现有系统和系统,以评估所有这些testing。

如何在Python中进行“基于性能”(基准)的unit testing

假设我已经获得了我的代码基础,使得unit testing覆盖率达到了很高的程度。 (超出某一特定时期,覆盖范围越来越大,投资回报率就越低。) 接下来我要testing性能。 要对代码进行基准testing,以确保新的提交不会不必要地减慢速度。 我对Safari对零售承诺放缓的零容忍政策非常感兴趣。 我不确定对于速度的承诺水平对于大多数项目来说都具有很好的投资回报率,但是我至less希望得到一个提示:速度回归已经发生,并且能够对此做出判断。 环境是Linux上的Python,一个对BASH脚本也可行的build议会让我很开心。 (但是Python是主要的焦点。)

WebDriver for Firefox:浏览器启动/空页面,挂起2分钟,重新启动,然后testing运行。 为什么?

我正在尝试更新我的Javatesting套件以使用Selenium 3和geckodriver。 但是,我在执行testing命令时看到了这个非常奇怪的行为: Firefox打开了一个空白页面。 它停留约2分钟。 它closures,然后立即重新启动。 testing运行并通过。 我使用Selenium 3.0.1,Geckodriver 0.11.1,64位Linux上的Firefox 50.0。 我得到这样的FirefoxDriver: DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); return new FirefoxDriver(capabilities); 我在我的Maven conf中设置系统属性webdriver.gecko.driver : <webdriver.gecko.driver> ${basedir}/src/test/resources/geckodriver </webdriver.gecko.driver> 我可以错过什么? 非常感谢您的帮助! 我的testing的控制台日志(有三个不同的计时组): 下午3点54分左右 完整日志: https : //justpaste.it/10qn9 主要片段: Configuring TestNG with: TestNG652Configurator [VerboseTestNG] RUNNING: Suite: "Surefire test" containing "1" Tests (config: null) [VerboseTestNG] INVOKING CONFIGURATION: "Surefire test" […]

如何在testing期间模拟出现故障的磁盘?

在Linux VM(Vmware工作站或类似的)中,如何模拟以前工作的光盘上的故障? 生产中出现光盘故障(可能是控制器,电缆或固件问题)的情况。 显然这是不可预测或可重复的,我想testing我的监测,以确保它正确警报。 理想情况下,我希望能够模拟写入失败但成功读取的情况,以及完全失败的情况,即scsi接口将错误报告给内核。