普通文本  |  47行  |  1.4 KB

import os
from autotest_lib.client.bin import test, utils


class linus_stress(test.test):
    version = 1

    def setup(self):
        os.mkdir(self.srcdir)
        os.chdir(self.bindir)
        utils.system('cp linus_stress.c src/')
        os.chdir(self.srcdir)
        utils.system(utils.get_cc() + ' linus_stress.c -D_POSIX_C_SOURCE=200112 -o linus_stress')


    def initialize(self):
        self.job.require_gcc()


    def run_the_test(self, iterations):
        utils.write_one_line('/proc/sys/vm/dirty_ratio', '4')
        utils.write_one_line('/proc/sys/vm/dirty_background_ratio', '2')

        cmd = os.path.join(self.srcdir, 'linus_stress')
        args = "%d" % (utils.memtotal() / 32)

        profilers = self.job.profilers
        if profilers.present():
            profilers.start(self)

        for i in range(iterations):
            utils.system(cmd + ' ' + args)

        if profilers.present():
            profilers.stop(self)
            profilers.report(self)


    def execute(self, iterations = 1):
        dirty_ratio = utils.read_one_line('/proc/sys/vm/dirty_ratio')
        dirty_background_ratio = utils.read_one_line('/proc/sys/vm/dirty_background_ratio')
        try:
            self.run_the_test(iterations)
        finally:
            utils.write_one_line('/proc/sys/vm/dirty_ratio', dirty_ratio)
            utils.write_one_line('/proc/sys/vm/dirty_background_ratio', dirty_background_ratio)