バッファ(1)古いようで大量のデータをキャッシュしないように値がハードコードされています。
$ buffer -m 1G
max_shmem 1 too low
// it doesn't even understand gigabytes
$ buffer -m 1000M
Cannot handle that many blocks, aborting!
$ buffer -m 1000M -s 1m
blocksize 1048576 out of range
代わりに何を使うべきですか?
ベストアンサー1
非標準移動:ソケットバッファを使用します。
例:
# echo 2000000000 > /proc/sys/net/core/wmem_max
$ socat -u system:'pv -c -N i /dev/zero',sndbuf=1000000000 - | pv -L 100k -c -N o > /dev/null
i: 468MB 0:00:16 [ 129kB/s] [ <=> ]
o: 1.56MB 0:00:16 [ 101kB/s] [ <=> ]
この目的のために、2つの追加のツールが実装された。緩衝管そしてopentounixsocketマッピング
$ ./buffered_pipeline ! pv -i 10 -c -N 1 /dev/zero ! $((20*1000*1000)) ! pv -i 10 -L 100k -c -N 2 ! > /dev/zero
1: 13.4MB 0:00:40 [ 103kB/s] [ <=> ]
2: 3.91MB 0:00:40 [ 100kB/s] [ <=> ]