我如何检查HDD与PHP的繁忙程度?

时间:2016-08-01 16:19:57

标签: php filesystems diskusage

我注意到一些云托管解决方案的磁盘IO确实很差。这会导致一些问题可以通过让脚本等到磁盘不太忙而解决。

使用PHP可以监视文件系统的繁忙(或不那么繁忙)状态而不会让事情变得更糟吗?

1 个答案:

答案 0 :(得分:17)

如果这是一个Linux系统,您可以自己计算磁盘使用情况 - 您选择实现它的语言将使用相同的概念。

您的内核最有可能使用First Order Logic Prover,这会在/sys提供有关您的系统的大量信息;我们可以定期获取有关所需磁盘的信息,并根据它们之间的差异计算使用情况。

在我的系统上,我将查看磁盘,sda,您的可能会有所不同。

$ cat /sys/class/block/sda/stat
   42632       25  2045318   247192  6956543  7362278 123236256 23878974        0  3703033 24119492

现在,如果我们查看/sys/class/block/<dev>/stat Name units description ---- ----- ----------- read I/Os requests number of read I/Os processed read merges requests number of read I/Os merged with in-queue I/O read sectors sectors number of sectors read read ticks milliseconds total wait time for read requests write I/Os requests number of write I/Os processed write merges requests number of write I/Os merged with in-queue I/O write sectors sectors number of sectors written write ticks milliseconds total wait time for write requests in_flight requests number of I/Os currently in flight io_ticks milliseconds total time this block device has been active time_in_queue milliseconds total wait time for all requests ,我们可以看到输出每列的以下说明。

/sys/class/block/<dev>/stat

如果我们按照cron计划执行此操作,并延迟一些等待时间,我们可以看到我们等待每个操作的时间。您还将获得有关总IOPS和RW带宽的其他统计信息。文档在每个领域都有更深入的内容。

无论选择何种语言,打开以获取有关磁盘信息的文件描述符都将是

binary=[]
bits=int(input("How many bits do you want to have?   >>"))
numOfCombos=2**bits
lenOfPart=numOfCombos/2
x=0
y=0
z=0
while x!=numOfCombos:
    binary.insert(x,[])
    x+=1
x=0
while x!=lenOfPart:
    binary[x].insert(0,"0")
    x+=1
while x!=lenOfPart*2:
    binary[x].insert(0,"1")
    x+=1
x=0
p=0
while x!=bits:
    lenOfPart=lenOfPart/2
    while z!=len(binary)-1:
        while p!=lenOfPart:
            binary[y].insert(len(binary[y]),"0")
            y+=1
            p+=1
        p=0
        while p!=lenOfPart:
            binary[y].insert(len(binary[y]),"1")
            y+=1
            p+=1
        p=0
        z+=1
    y=0
    x+=1

print(numOfCombos)
print(len(binary))
print(binary)

如果我们按计划执行此操作,我们可以绘制精美的图表;)

sysfs