LoginSignup
0
1

More than 5 years have passed since last update.

Python > scpの処理速度を測定する (精度は悪い) | scp -C > 圧縮しながらコピー (速度2倍)

Last updated at Posted at 2018-02-26
動作環境
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
NCAR Command Language Version 6.3.0
for WRF3.7.1, WPS3.7.1
  openmpi-1.8.x86_64 とその-devel
  mpich.x86_64 3.1-5.el6とその-devel
  gcc version 4.4.7 (とgfortran)
for WRF3.9, WPS3.9
  Open MPI v2.1.1
  gcc version 4.9.2 (とgfortran; devtoolset-3使用)
 NetCDF v4.4.1.1, NetCDF (Fortran API) v4.4.4
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) 
Python 3.6.0 on virtualenv
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
date (GNU coreutils) 8.4 
tmux 1.6-3.el6

35GBのデータを別のサーバーからscpにて取得中。

遅そうなので、取得中に速度を測定するPython scriptを組んでみた。

関連

処理

  • du -kの最後に表示されるディレクトリサイズを使う
  • インターバル時間の前後でのサイズの変化を取得する
  • ある程度の速度だけ知りたいので、精度は望まない

code

check_dirsize_180226.py
import subprocess as sb
import time


def get_dir_size():
    CMD = 'du -k'
    res = sb.getoutput(CMD)
    res = res.replace('\t', '')
    res = res.replace('.', '')
    return int(res.split('\n')[-1])

INTERVAL_SEC = 5

dirsiz1 = get_dir_size()
time.sleep(INTERVAL_SEC)
dirsiz2 = get_dir_size()

print(dirsiz1, 'kB')
print(dirsiz2, 'kB')
inkB = ((dirsiz2 - dirsiz1) / INTERVAL_SEC)
print('%dkB /sec' % inkB)
print('%dMB /sec' % (inkB / 1024))

run
$ python3 check_dirsize_180226.py 
20670836 kB
20724596 kB
10752kB /sec
10MB /sec

35GBあるので、あと1536秒(25分)程度かかる。

使用環境が特殊なので速度が出ない(未解決)。

scp -C

scp -Cにしてみた。

ばらつきはあるが、平均的に2倍の速度になった。
(補足: 当然、bz2などの圧縮済みのファイルに対しては速くはならない)。

$ python3 check_dirsize_180226.py 
739188 kB
882384 kB
28639kB /sec
27MB /sec
$ python3 check_dirsize_180226.py 
1776460 kB
1890544 kB
22816kB /sec
22MB /sec
$ python3 check_dirsize_180226.py 
2733952 kB
2819580 kB
17125kB /sec
16MB /sec

やり直したので、35GB / 20MB = 1792秒かかる。
(将来の処理時間短縮につながるので、今回の処理時間増加は問題ない)。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1