俺の雑記帳

My random memorandumです。(つまり、個人的な備忘録であり、その点ご容赦を。)

LSO/TSO(~送信オフロード)の設定(Windows/Linux)。不安定化要因になり得るのでOffに?

まとめ

仕事関係で、AWSの古いEC2インスタンスで大量送信オフロードが不安定だということで、Offにしたりした。
どうやら、MTUとの関係も深いようだ。MTUに応じた分割を、CPUでやるのか、オフロードをOnにしてNIC?ドライバ?にやらせるのか、ということのようだ。 (MTUについて: 同じ仕事で、同VPC内のサーバーのMTUを揃えた方が良いとの事で、揃えかけた。確かに挙動が変わった部分があった。※MTUについては別途B!4つ(20240226~20240305)あり。

用語:

  • LSO = Large Send Offload = Large Segment Offload = 大量送信オフロード = 大規模送信オフロード = 大容量送信オフロード = 一括送信オフロード
  • TSO = TCP Segmentation Offload = TCPセグメンテーションオフロード

問合せたら、上記二つの用語は同じと思ってよいとのこと。
どうやら、WindowsではLSO、Linuxでは TSO という事が多い。
厳密には、LSOのうち、TCPに限るとTSOのようで、同様に「何とかoffload」という設定も多い。1
VMWareの何とかDriverの最新版では、TSOをLSOと言い換えた?2

具体的な設定画面/コマンド

Windows:

LSOの設定確認&変更。右のGUIと左のCUIは同じこと。

古いWindowsの大量送信オフロード設定(GUIPowerShell)(Windows Server 2012 R2)
日本語で「一括送信オフロードV2」と表示される場合もあるようだ。

Linux

TSOでググったら、LINUXの設定として出てくることが多かった。
以下が表示例:
(「何とかoffload」が多い。すべてLSOの一種なのだろうか…)

[ec2-user@ip-10-xx-x-41 ~]$ ethtool -k eth0
Features for eth0:
rx-checksumming: on [fixed]
tx-checksumming: on
    tx-checksum-ipv4: on [fixed]
    tx-checksum-ip-generic: off [fixed]
    tx-checksum-ipv6: on
    tx-checksum-fcoe-crc: off [fixed]
    tx-checksum-sctp: off [fixed]
scatter-gather: on
    tx-scatter-gather: on
    tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
    tx-tcp-segmentation: on
    tx-tcp-ecn-segmentation: off [fixed]
    tx-tcp-mangleid-segmentation: off
    tx-tcp6-segmentation: on
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: on [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-gre-csum-segmentation: off [fixed]
tx-ipxip4-segmentation: off [fixed]
tx-ipxip6-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-udp_tnl-csum-segmentation: off [fixed]
tx-gso-partial: off [fixed]
tx-sctp-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
busy-poll: off [fixed]
hw-tc-offload: off [fixed]
[ec2-user@ip-10-xx-x-41 ~]$
参考ページ:
  • NICのオフロード機能を無効にする #Linux - Qiita』qiita.com 今回は「LINUXは問題ない」とのことだったが、LINUXでも、(TSOに限らず)"何とかオフロード" で 問題が発生することがあるようだ。
  • 『TSO(TCP Segmentation Offload)について - hana_shinのLinux技術ブログ』hana-shin.hatenablog.com こちらは、TSOについて詳細に記載。
  • Linux から認識されている、すべてのネットワークインターフェイス名だけを取得する #Linux - Qiita』qiita.com こちらはあまり関係ないが、 ls /sys/class/net/コマンドでNIC一覧が採れるとか、VirtualなNICを除きたければ 少し長いコマンドで取れるとか(シェルスクリプトに良さそう)。。

  1. RHEL 7 on IBM Power: Taking advantage of TCP large send and receive - Red Hat Customer Portalaccess.redhat.com 引用 The technique is also called TCP segmentation offload (TSO) when applied to TCP,...
  2. 『Understanding TCP Segmentation Offload (TSO) and Large Receive Offload (LRO) in a VMware environment (2055140)』kb.vmware.com 引用Note: TSO is referred to as LSO (Large Segment Offload or Large Send Offload) in the latest VMXNET3 driver attributes.

容量削減作業で使ったLINUXコマンドを記録(ファイル名を置換し一意集計したり… sed, "$(…)", sort, uniq, find, ls,,,)

俺管理のLINUXサーバーの容量削減手順だが、
LINUXコマンド集を兼ねた、備忘録。 (前は調べる/考える手間を惜しむようなコマンドでも、今は、AI-LLM(今回はCopilot)で 少々複雑な処理でも すぐ適切なコマンドやその組み合わせを教えてくれるんで。)

コマンド集としてのサマリ

  • 文字列を置換[sed](sedはファイルinputが基本だが、パイプ("|")inputでコピペ文字列を変換): echo 'C:\Users\YourName\log\TeraTerm' | sed 's/\\/\//g'
  • コマンド引数に別のコマンド結果を使う["$(……)"]:cd "$(echo 'C:\Users\YourName\log\TeraTerm' | sed 's/\\/\//g')"
  • コマンド結果を数値順で並べる [sort]:du -mcs ./* | sort -nr
  • 結果から重複を削除し一覧(ついでに数える)[uniq]:・・・| sort | uniq -c
  • 直下のディレクトリだけ表示: ls -d */
  • 直下のファイルだけ表示: find . -maxdepth 1 -type f
  • 1文字ワイルドカードを活用し,マッチ数を数え間引き[?]:rm 2022???? -rfls 2023??30 -dls 2023??31 -drm 2023??30 -rf

以降は、容量削減作業としての解説。

BusyBoxでcdするためにパスの\を/に変換する

まず、以前のLINUX作業ログを、BusyBoxWindows上でLinuxコマンド(今回はfile ./ -name 容量―WinのFile Explorerの検索では検出できんかったんで-法則も分らん)を手軽に使う.exe)で探した。
その為に、File Explorerからpathをコピーし、cdしたが、\を/に変換する必要があった。
変換した結果を直接cdに使うのも、以下のコマンドのポイント。

cd "$(echo 'C:\Users\YourName\log\TeraTerm' | sed 's/\\/\//g')"
du結果の上位だけ表示(sort)

容量多いディレクトリを見つける俺おなじみのdu -mcs ./*。ただファイルが多いディレクトリ下だと困る。そこで sort を組み合わせる。

du -mcs ./* | sort -nr | head
ログファイル名中の日時部を抜き、ファイル名共通部を一覧

 例:以下のようなファイルが多数ある。

class]$ find . -maxdepth 1 -type f 
./OneIO_20240405-161601.357672.log  
./OneIO_20240405-161901.123456.log  
./AnotherIO_20240405-161601.333333.log  
./AnotherIO_20240405-162001.321012.log  
./SomeIO_20240405-162001.321012.log  

batch]$  find . -maxdepth 1 -type f 
./Spec.20240407-050801.log  
./Spec.20240407-052001.log
./Emp.20240407-050501.log
./Emp.20240407-053501.log
./grep.20240407-122.log

上記のように 似たような名前が多数あって、それぞれの共通部分でカウントしたい。*1

class]$ find . -maxdepth 1 -type f | sed -r 's/^\.\/(.*)_[0-9]{8}\-[0-9]{6}\.[0-9]{6}\.log$/\1/' | sort | uniq -c
batch]$ find . -maxdepth 1 -type f | sed -r 's/^\.\/(.*)\.[0-9]{8}\-[0-9]{6}|[0-9]{3}\.log$/\1/' | sort | uniq -c
日付毎ディレクトリを削除(年ごとに数えたり、特定フォーマットだけ削除したり)

まずYYMMDDのフォルダ名を年ごとに数えた。以下全て同じ結果(ディレクトリは上記ファイルと違って、短く書ける)。

find . -maxdepth 1 -type d -print | cut -c 3-6 | sort | uniq -c
find . -maxdepth 1 -type d | cut -c 3-6 | sort | uniq -c
ls -d */ | cut -c 1-4 | sort | uniq -c

あとは、次のように、いくらかのパターンで減らした。(以下前半は隔年で削除(後ろに特別に文字を入れたディレクトリ名は残す)。後半は、毎月30&31日を保管してたが一方を削除)

$ rm 2016???? -rf
$ rm 2018???? -rf
$ rm 2020???? -rf
$ rm 2022???? -rf

$ ls 2023??31 -d
20230131  20230331  20230531  20230731  20230831  20231031  20231231
$ ls 2023??30 -d
20230130  20230330  20230430  20230530  20230630  20230730  20230830  20230930  20231030  20231130  20231230
$ rm 2023??30 -rf

*1:考えてみれば、大した目的ではなかった。日付別のログディレクトリに移動する処理が効いていない日を、一つのログの種類で見つけようとしたところだった。ファイル数が多すぎるので普通にすべて表示しまっても訳分からなくなるから。しかし、日付部分を削除するのではなく、日付部分だけを取得して数えるほうが良かった。

家島リンク集 ― 家族サイクリングのために調べた

姫路港からの船。(300円で自転車も)

h-ieshima.jp

島内移動は、レンタル自転車、電気自動車、(バスは平日のみ?)

rito-guide.com

h-ieshima.jp

スマホ用イラストマップ

tanosu.com

PDF

家島諸島(兵庫県)島の紹介シート.pdf

↓日本語版なし h-ieshima.jp

全般情報(家島観光事業組合)

h-ieshima.jp

↓2016だけど魅力的に見える: h-ieshima.jp

↓2016(↑)のアップデートされている版: h-ieshima.jp

モデル旅

tabiiro.jp

tabiiro.jp

cstomato.jugem.jp

俺のmod_rewrite再入門

mod_rewriteは、複雑でわかりにくい。俺のはてなブックマーク(非公開)にはmod_rewriteタグがあるが、最古のものは15年も前だ!(歳を感じる)
Webばかりやってるわけではないから仕方ないが、なかなか理解しない(もしくは理解しても しばらく使わなかったりして忘れる)。
※ 10年も前にも記事(というかリンク集の備忘)を書いているが(mod_rewrite - 俺の雑記帳)、今回参照していない…。

  • 復習
  • 今回書いたものを例示 ― 段階的に新サイトへ移行するケース(多言語サイト)
  • RewriteCond
  • パスの書き方
  • .htaccessの複雑性
  • RewriteRule関連その他
  • デバッグ方法など

.

続きを読む