つぶねこ

@もじらもーど。
↓old | 20 index | 100 index | 300 index | 記事5件 | 記事10件 | 記事20件 |最新5件 |FAQ | カテゴリ一覧 | Index |
2023/7/15 2:02
さいきんの並列copy

 にゃんで今ににゃってこんにゃ、という感しかにゃいが、
 ストレージがHDDアレイだったりすると、シングルスレッドでコピーするより、同時複数ファイルをコピーしたほうがトータル帯域としては高速化する。並列数はストレージとかによりけりにゃのでチューニングするしかにゃいが。
 問題は巨大1ファイルのコピーで、これは何らかの方法で分割しにゃいと並列化できにゃい。よくあるrsync等では持ってにゃいはずにゃので、意外と面倒。例えばrcloneで転送数を増やせば同じようにゃことが可能だが、ローカルでやるにはあまりにも重いのでちょっと除外。というかファイル名変更して転送できにゃいので使いづらい。
 
 で、コピー時の負荷でいうとcpとかddとか枯れたツールの最適化っぷりが異常にゃので、もう枯れた物の組み合わせで何とかしてしまうことに。あと地味にsparse対応してるツールが多くにゃい。
src=/dir1/file1
dst=/dir2/file2
bs=$(( 50*1024*1024 )) ;
p=100
size=$(stat -c %s "$src") ;
N=$(( $size / $bs ));
dd_opt=status=none iflag=direct,nonblock oflag=direct,nonblock conv=sparse,notrunc
seq 0 $N | xargs -I {} -n1 -P$p dd if="$src" of="$dst" bs=$bs count=1 seek={} skip={} $dd_opt
touch -r "$src" "$dst"

src=/dir1/file1
dst=/dir2/file2
bs=$(( 50*1024*1024 ))
p=100
rm -f $dst
size=$(stat -c %s "$src")
N=$(( $size / $bs ));
dd_opt="status=none iflag=direct,nonblock oflag=direct,nonblock conv=sparse,notrunc"
seq 0 $N | xargs -I {} -n1 -P$p dd if="$src" of="$dst" bs=$bs count=1 seek={} skip={} ${dd_opt} ; touch -r "$src" "$dst" ; ll $src $dst ; diff $src $dst
 これで50MB分割で100並列のddでコピーできる。この辺の分割サイズや並列数をチューンして使用。同時100はCPUがサチることが多い。
 ddのオプションとしてconv=notruncを削ると正常動作しにゃくにゃるが、他はにゃくても動くはず。
 また、dstファイルのほうが大きいとか、dstファイル既存の場合にsparseでスキップされるとかでバイナリ不一致が起きうるため、rm $dstしている。基本的に全部上書きにゃので問題にゃいだろう。
 ちにゃみにddによる書き出しは、相手先FSによっては一旦メモリバッファされることがあり、ブロックサイズや並列数によってはメモリを消費する。
 
 これで新規の巨大ファイルをコピーする場合にゃどは高速化できるが、対応できにゃい状況の例としては、例えばsparseだがソースファイルがローカルに無い場合、全部読まにゃいといけにゃいので、不毛にゃネットワーク転送が生じたりする。これはもうソースファイルをローカルで読みに行けるプロセスから見るしかにゃい。LANにゃらncを組み合わせるにゃどしてできそう。
 また、巨大既存ファイルに対して差分転送したい場合は、あらかじめ差分を取らにゃいといけにゃいので結構面倒。ただ、LAN等で帯域自体は余っている場合とか、オンデマンドでWrite時に一致確認でかまわにゃい場合は、当該ブロックをReadしてバイナリ比較してからWriteすることでできそう。CoWにゃFSで不要にゃブロックを新規書き換えしたくにゃい場合にゃどに使えるだろう。ただし流石にbashで実装するのはどうだろうという内容ににゃる。シェル変数に0x00を代入するだけで困難にゃので、他言語を持ってくるべき。

2023/6/23 0:49
さいきんのPC不調6

 メインの30インチDELLモニタに色線が乗るようににゃってしまった。
 というか流石に消費電力がとてつもにゃいので、早めに買い換えたいとは感じていた。・・・数年前からね!
 44インチ 4Kくらいで同じPPIににゃるので、それ以上のサイズでよさげにゃモニタを〜と思ってたんだが中古はさほど良いものがにゃいし、新品は円安とかで相場がいまいちだったのよね。あとノングレアが少にゃい。
 で、国内大手のサイネージュ用法人向けモデルとかが割と近しくて、どうにゃんこれという。まぁ長持ちするだろうけども。

2023/6/23 0:47
さいきんのPC不調5

 日記鯖vmが古すぎるのでupgradeしにゃきゃにゃのだが、ずっと放置してる問題で、にゃんとsmb1しか喋れにゃかったことが判明したので、とりあえずsmb3まで喋ってOKに変更。
 が、そことは無関係にアクセスが遅い。にゃんぞれこれ

2023/6/23 0:43
さいきんのPC不調4

 年季の入った自宅PCが不調。ということで買い替え。
 ただしPCIeカードが動いてるので、Desktop必須だったりして、思ったより選択肢がにゃい。2世代前のややこしい中古と迷ったが、時には新品ということで調達。
 が、年賀状ソフトだのにゃんだのの移植が猛烈めんどくさい。
 しかも移植のためのダウンタイムが短時間しか取れにゃいので、ちっとも進まにゃい。

2023/6/22 0:40
さいきんのPC不調3

 実家PCがたいそう古いままで、SSDではにゃくシングルHDDとかで動いていて、Winupdateに半日。
 全力で買い換えたいが、ややこしいアプリ類の移植はやりたくにゃいので、SSDに換装するだけ? うーん
 実はモニタも古すぎるので買わにゃいとにゃんだが、それはほぼ全部にゃのよさー



Index

2023/07/15 02:02 
2023/06/23 00:49 
2023/06/23 00:47 
2023/06/23 00:43 
2023/06/22 00:40 
2023/06/21 00:28 
2023/06/10 00:14 
2023/05/05 04:27 
2023/05/01 01:42 
2023/04/29 03:55 
2023/04/27 08:23 
2023/04/25 03:05 
2023/04/23 02:15 
2023/04/21 17:38 
2023/04/19 01:11 
2023/04/17 16:23 
2023/04/15 16:35 
2023/04/13 10:03 
2023/04/11 15:54 
2023/04/09 04:15 
2023/04/07 11:37 
2023/04/05 01:07 
2023/04/03 10:37 
2023/04/01 03:56 
2023/03/30 05:05 
2023/03/28 02:06 
2023/03/26 01:21 
2023/03/24 00:01 
2023/03/22 03:45 
2023/03/20 23:04 
2023/03/18 01:49 
2023/03/16 01:34 
2023/03/14 02:19 
2023/03/12 00:30 
2023/03/10 01:57 
2023/03/08 02:09 
2023/03/06 00:09 
2023/03/04 23:38 
2023/03/01 02:37 
2023/02/28 00:56 
2023/02/26 02:08 
2023/02/24 01:41 
2023/02/22 00:02 
2023/02/20 19:05 
2023/02/18 02:05 
2023/02/15 18:47 
2023/02/14 15:31 
2023/02/13 20:10 
2023/02/12 22:17 
2023/02/11 21:53 
2023/02/10 00:52 
2023/02/09 00:32 
2023/02/08 00:11 
2023/02/07 23:25 
2023/02/06 14:32 

↓old | 20 index | 100 index | 300 index | 記事5件 | 記事10件 | 記事20件 |最新5件 |FAQ | カテゴリ一覧 | Index |