2021年2月12日金曜日

カーネル本

最近、なんの気無しに古いカーネルな本を数冊買った。読むとは言っていない。

1. https://www.amazon.co.jp/dp/4320025512/

1991/6 刊、丸善。手元のは 2000/9 の14刷。

原書は 1986/5 刊 https://www.amazon.co.jp/dp/0132017997/ 

 

2. https://www.amazon.co.jp/dp/4890529306/ 

1996/4 刊、ソフトバンク。手元のは刷数不明。1刷かな。

原書は 1994/6 刊 https://www.amazon.co.jp/dp/0201633388/

 

3. https://www.amazon.co.jp/dp/4894711893/

2000/5 刊、ピアソンエデュケーション。まだ手元にない。手元のは1刷。3冊中で最も鈍器度が高い。表紙には 4.4BSD, Solaris 2.x, Digital UNIX などと書いてあってそれだけで古い本であることが感じられる。

原書は 1995/10 刊 https://www.amazon.co.jp/dp/0131019082/

 

1 や 3 のように原書発刊から5年くらい経ってたのはすごいな。ものによっては原書新版が出てたりするくらいな気がする。

当時はどうやって「この専門書良いから翻訳して日本でも出そう」という動きが発生したんだろうか。ネットニューズで盛り上がったりしてたのかしら。 UNIX magazine は 1986年創刊、 UNIX USER は 1992年創刊だったようだ。

 

1 の Maurice J. Bach 氏は書籍に略歴は書かれていなかった。ググってもこの本しか出てこない。

2 の Curt Schimmel 氏はベル研UNIX開発チームの元メンバー、発刊当時は SGI の中の人だったらしい。お〜〜

3 の Uresh Vahalia 氏は現在 HPE の VP of Engineering の方のはず。当時は EMC の中の人だったと。

どれもパラパラっと読むくらいかな。いずれも「コンディション: 良い」以上のを買って、1 が最も高価だった(当時の定価よりかは安い)。2 は 1,000円、送料まで入れると 3 がもっとも安価で手に入れられたのだった。

 

これは 2001年: あえてSolarisを使う理由  https://askslashdot.srad.jp/story/01/08/29/1320256/

 

ところでウルリッヒのスレッドプログラミング本は一体どうなったのだろう。2018 年に発売してたように見えるけど、出てないと思う。

https://www.amazon.co.jp/dp/0131487264/


2021年2月6日土曜日

ACM 更新していた

ACM のメンバーシップ更新。

O'Reilly Learning の技術書利用が主目的で、社の制度で O'Reilly Learning 利用することも可能だけども、前に塩対応されたので ACM メンバーになって使い始めた、という感じ。

一冊すみからすみまで読み切ることはなくリファレンス的利用が多いな。ちゃんと読んだ方が血肉となるだろうと思いつつ出来てはいない。

去年はしばらく(数ヶ月)利用しておらず、久しぶりになにか読むかと思ったら O'Reilly Learning を deactivate されており Customer Service Representative に問い合わせしたのだった。利用するならちゃんと利用しなさいてこと。

Early Release で出てきてる書籍で気になるのもあるのでぽちぽちと playlist に追加。AWS Cookbook やら High Performance MySQL, 4th Edition あたりよさそう。

BSD grep の今

 container_of をゴソゴソと見てるとき、macOS 上にソース持ってきて当初は grep してたのだけど、あれ、これやたら遅いな?と思いやっぱり ripgrep だなと rg にしたのだった。

macOS の grep (BSD grep) はGNU grep より遅いね、というのはささっとググるだけでこんな感じで見つかる。BSD grep が遅いのか、GNU grep が速いのか。

https://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html

http://jlebar.com/2012/11/28/GNU_grep_is_10x_faster_than_Mac_grep.html

 

うん、おそい。

$ time grep -r ^#include . |wc -l; grep --version
  341659

real    0m14.074s
user    0m12.134s
sys    0m1.902s
grep (BSD grep) 2.5.1-FreeBSD

$ time ggrep -r ^#include . |wc -l; ggrep --version
  335204

real    0m2.162s
user    0m0.762s
sys    0m1.411s
ggrep (GNU grep) 3.6
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others; see
<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

$ time rg ^#include |wc -l; rg --version
  335204

real    0m0.557s
user    0m1.036s
sys    0m2.906s
ripgrep 12.1.1 (rev 9c8d873a75)
-SIMD -AVX (compiled)
+SIMD +AVX (runtime)

ん、BSD grep とそれ以外で数が合わない。いやいや・・diff とってみてもこの差が出るのかわからんぞ・・


以下は VM な FreeBSD 12.2-R で。BSD grep 最も遅いけどもだいぶマシになっている感。

$ time grep -r ^#include . |wc -l; grep --version
  341714

real    0m2.061s
user    0m0.999s
sys     0m1.149s
grep (GNU grep) 2.5.1-FreeBSD

Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ time bsdgrep -r ^#include . |wc -l; bsdgrep --version
  341714

real    0m3.863s
user    0m2.525s
sys     0m1.435s
bsdgrep (BSD grep) 2.6.0-FreeBSD

$ time rg ^#include |wc -l; rg --version
  335259

real    0m0.872s
user    0m1.242s
sys     0m2.031s
ripgrep 12.1.1
+SIMD -AVX (compiled)
+SIMD +AVX (runtime)

これもまた数が合わない、今度は ripgrep が。

find ~ xargs しましょう

 $ time find . -type f|xargs rg ^#include |wc -l
  335259

real    0m1.257s
user    0m1.356s
sys     0m2.155s
$ time find . -type f|xargs grep ^#include |wc -l
  335259

real    0m1.906s
user    0m0.824s
sys     0m1.235s
$ time find . -type f|xargs bsdgrep ^#include |wc -l
  335259

real    0m3.522s
user    0m2.560s
sys     0m1.110s

2021年1月31日日曜日

ファイルシステム

Linux シェアを見ると、Ubuntu が圧倒的、その後に続く CentOS と Debian を合わせるとこの3つで8割強。

Ubuntu, Debian のデフォルトのファイルシステムは ext4 で CentOS は 7 から XFS 。XFS をデフォルトにしてるのは RHEL とその互換(を謳うもの)以外に知らず、XFS のこと自体もあまりよく知らないのだった。( SLES はOS用がbtrfs、他はXFS )

XFS の出自としては IRIX だけども IRIX がまだ多用されていた頃に触れる機会はなかったので当時のことも全くわからない。稼働する実機を見たことがないという。RHEL での XFS 採用は確か 5,6 で scalable filesystem add-on とし存在していたなというのは記憶にある。

ちょっとググると、

http://www.intellilink.co.jp/article/column/oss-rh02.html

"RHEL 5、6でも有償のアドオンとしてXFSは利用可能です。RHEL 7のXFSは無償でサポートを受けられるようになりました。"

と。また、

"昨今では、多数のプロセッサーやディスクアレイを搭載したサーバーに大容量ファイルシステムを構築するなどの要件もあり、ext系ファイルシステムではスケーラビリティの限界が見えつつあります。"

のように書かれているのだけども、ext4 不向きなユースケースは多数存在するのかしら。

File systems and storage limitsを見るとまぁ確かにXFS はすごい。Maximum file size よりも Maximum file system size かな?

phoronix の記事見ると性能も◎ https://www.phoronix.com/scan.php?page=article&item=linux-58-filesystems&num=1

とすると Ubuntu や Debian でもデフォルトにされてもよさそうに思う。あくまでデフォルトでしかないからわざわざそうしてないだけかもしれない。

「XFSの中の人」の数の関係もあるのかな。

2021年1月30日土曜日

container_of

ツイッター上で container_of の話題を目にした。カーネルは薄ーく読む程度しか関わりがなく「なるほどそういうのもあるのか」という感じ。

はてこのマクロはいつからあるんだろうと調べてみると 2.5.28 からある模様。2002/7/25リリース。

https://www.linux.com/news/linus-torvalds-linux-2528/

https://lwn.net/Articles/5482/

$ find linux-2.5.28 -name \*.[ch] |xargs rg container_of|wc -l
      27

今日時点での最新stable 5.10.11 はどのくらいあるか。

$ find linux-5.10.11 -name \*.[ch] |xargs rg container_of|wc -l
   17222

ほえ〜

2005年にGKHさんが書いてる=> container_of() 元は2003年に Linux Journal に書かれたらしい。

マクロはその後2017年によりシュッとした kernel.h: handle pointers to arrays better in container_of()


そうそう、2002年、回線なんてこんなんだったか。。https://bb.watch.impress.co.jp/cda/special/16691.html#2002

数年後に開始のメタルプラス使っていたな。その前何を使っていたか覚えていない。

2021年1月13日水曜日

初詣

二箇所行った。ひとつ目で丑の小さな置き物に入ったおみくじを引いて、中吉。結びの言葉は「今は何も控えよ」と書かれていた。

ふたつ目で明治神宮へ行き大御心を引く。今回は一七で明治大帝の一首、これまでのと被りなし。(心はいつも清く明るく持ちましょう)と。 去年からか英文も併記されている。

2021年1月10日日曜日

加水分解

何年か使っていた Anker の USB 3.0 、4ポートのハブ。どうもケーブルが加水分解してしまいベットベトに。被覆はボロボロと剥がれ落ちてしまうので処分。さようなら。