Pythonはシステムiopsサンプルコードを取得する方法

2347 ワード

iopsの概要
iopsは主にデータの面で用いられ、この指標はデータベース性能評価の重要な参考であり、iopsは毎秒読み書き(I/O)操作を行う回数であり、主にランダムアクセスの性能を見ている.一般的にiopsが高くなるためにはディスクアレイに依存しなければならない.実際のオンライン上のデータベースベースはraid 10の配置であり、raid 5は実際の生産環境で圧力が耐えられない場合、もちろん具体的な業務圧力状況を開く必要がある.もし物理机を使うならばiopsが実际の中でどれだけの値に走ることができるかを见て、今云も普遍的になって、もしあなたが使うRDSの云のデータベースならば、このiopsは业务の情况によって自分で选ぶことができて、基本的にパラメータで、必要に応じて修正することができて、もちろん数値は大きいほど费用は高くなります
python取得システムiopsコードは以下の通りです.

#!/usr/bin/python

import os, time, math

run_tests = 3

devices = os.listdir('/sys/block/')
check_devices = []

reads = {}
writes = {}

for dev in devices:
    if dev.startswith('md') or dev.startswith('sd') or dev.startswith('hd'):
        check_devices.append(dev)
        reads[dev] = []
        writes[dev] = []

check_devices = sorted(check_devices)

for t in range(run_tests + 1):
    for dev in check_devices:
        file_data = open('/sys/block/%s/stat' % dev).readline().strip().split(' ')
        clean = []
        for num in file_data:
            if num != '':
                clean.append(int(num))

        reads[dev].append(clean[0])
        writes[dev].append(clean[4])
    print reads[dev]
    print writes[dev]

    time.sleep(1)



print "Device    Read    Write"
print "--------------------------------------"
for dev in check_devices:
    clean_reads = []
    reads[dev].reverse()
    for test, result in enumerate(reads[dev]):
        if test > 0:
            clean_reads.append(float(reads[dev][test - 1] - result))

    rops = int(math.ceil(sum(clean_reads) / len(clean_reads)))

    clean_writes = []
    writes[dev].reverse()
    for test, result in enumerate(writes[dev]):
        if test > 0:
            clean_writes.append(float(writes[dev][test - 1] - result))

    wops = int(math.ceil(sum(clean_writes) / len(clean_writes)))

    print "%s %s %s" % (dev.ljust(13), repr(rops).ljust(11), repr(wops))

まとめ
以上がPythonがシステムiopsを獲得したすべての内容で、この文章がpythonの学習と使用に一定の助けがあることを望んで、もし疑問があれば皆さんは伝言を残して交流することができます.