ラベル tech の投稿を表示しています。 すべての投稿を表示
ラベル tech の投稿を表示しています。 すべての投稿を表示

2025年6月3日火曜日

Redis

昨年末に antirez さん復帰してたのを今ごろ知る

Welcome back to Redis, antirez

↑に書かれている vector sets なるデータ型が 8.0.0 には追加されていた

https://github.com/redis/redis/releases/tag/8.0.0 https://redis.io/docs/latest/develop/data-types/vector-sets/

& ゴタゴタの発端のライセンスが 8.0.0 からは AGPLv3 も選べるようになったと。

機能が Valkey とどのくらい違ってきているのかはよくわかりませんな。

2021年2月28日日曜日

gtdl

Go でサポートしているプラットフォームは  go tool dist list で見れるというのをどこかで知ったので記録。Go 使っているわけではないけども。 

$ go tool
addr2line
asm
buildid
cgo
compile
cover
dist
doc
fix
link
nm
objdump
pack
pprof
test2json
trace
vet
$ go tool dist
usage: go tool dist [command]
Commands are:

banner         print installation banner
bootstrap      rebuild everything
clean          deletes all built files
env [-p]       print environment (-p: include $PATH)
install [dir]  install individual directory
list [-json]   list all supported platforms
test [-h]      run Go test(s)
version        print Go version

All commands take -v flags to emit extra information.
$ go tool dist list
aix/ppc64
android/386
android/amd64
android/arm
android/arm64
darwin/amd64
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
freebsd/arm64
illumos/amd64
ios/amd64
ios/arm64
js/wasm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/mips
linux/mips64
linux/mips64le
linux/mipsle
linux/ppc64
linux/ppc64le
linux/riscv64
linux/s390x
netbsd/386
netbsd/amd64
netbsd/arm
netbsd/arm64
openbsd/386
openbsd/amd64
openbsd/arm
openbsd/arm64
openbsd/mips64
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
windows/arm

$ go tool dist list |cut -d/ -f 1 |uniq
aix
android
darwin
dragonfly
freebsd
illumos
ios
js
linux
netbsd
openbsd
plan9
solaris
windows

$ go version
go version go1.16 darwin/amd64

'solaris/amd64' と、Solaris は x86_64 だけらしい。NetBSD より OpenBSD のが多いのが意外な。

2021年2月25日木曜日

カーネル本より #2

3章、スレッドと軽量プロセス で混乱気味。 

3.2 基本的な概念要素 で 

本節では、3つの重要なタイプであるカーネル・スレッド、軽量プロセス、ユーザ・スレッドについて述べる

とある。ここの軽量プロセス( lightweight process, LWP ) が、?

カーネル支援ユーザ・スレッドのことである

と書かれていて、読んでる最中はいまいちピンと来ず、 「支援」と書かれているからかな・・と思い

すべてのプロセスは、1つあるいはそれ以上のLWPを持つ。その各LWPは別個のカーネル・スレッドで支援されている(図 3.4)

その図には 1つの P(プロセス) が複数のL(LWP) と対応していて、L と K(カーネル・スレッド) が 1:1 で対応している。

各LWPはカーネル・スレッドに関連している一方で、カーネル・スレッドにはシステム・タスクに貢献してLWPを持たないものもある。

 ・・・その後に

メモ:  LWP という術語は、SVR4/MP と Solaris 2.x の術語から借りてきたものである。 SunOS バージョン 4.x では、LWP は次の項のユーザ・レベル・スレッドを指しているので、混乱がある。しかし、本書では、LWP をカーネル支援ユーザ・スレッドとして一貫して用いる。あるシステムでは、仮想プロセッサとして用いているが、本質的には LWP と同じである。

はい・・?

カーネルがLWPを生成、同期、管理する機構を提供する一方で、LWPの賢明な使用はプログラマに任される。多くのアプリケーションはユーザ・レベル・スレッド機能の方がよりよいサービスを受けられる。

と。スレッドのご利用は計画的にと。「次の項」の 3.2.3 ユーザ・スレッドには以下

Mach の Cスレッドや POSIX の pスレッドなどのライブラリ・パッケージを介して実現する。

うーん・・?グリーンスレッドとは違う?ややわけがわから無くなってきたのでなんとなく wikipedia を頼ると・・・ https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%81%A8%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89

書かれている、「カーネルスレッドとLWPを総称してネイティブスレッドと呼ぶこともある。」だと自分としてはしっくりくる感。

その後の 3.5 節ではスケジューラ・アクティベーションが出てくる。前の NetBSD 。https://ja.wikipedia.org/wiki/Scheduler_activations

「Scheduler activations は 1999年に Anderson、Bershad、Lazowska、Levy により提唱された」と書かれているけど 1991年ではないかな。Received June 1991; revised August1991; accepted September 1991とある。

https://en.wikipedia.org/wiki/Light-weight_process

原書が出た当時に触ってたら「これなー」となるんだろうな。2000年代前半にいた職場では Solaris 入れたラップトップを持ってる人いたけど、LWP がどうの、というのは一度も聞いたことがなかったなぁ。

https://docs.oracle.com/cd/E19253-01/819-0390/mtintro-75924/index.html

Solaris のマルチスレッドライブラリと標準

 

その後2003年には Linux で ネイティブなパジックススレッドライブラリが出てくる。

Red Hat Linux 9 のプレスリリース残ってるのね

https://www.redhat.com/en/about/press-releases/press-redhatlinux9

2021年2月17日水曜日

OS本

古のカーネル本はいくつか買ったので、さて、ナウなOS本を今買うとしたら何になるのだろうと熱帯雨林のサイトで探してみると以下が見つかる。

オペレーティングシステムの概念 https://www.amazon.co.jp/dp/4320122534/

だが2010年刊と10年も前、原書は 2004年。

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

和訳版は7版までだけど、原書なら 10th まで出ていた。このペースだと再来年には11th ?

2008, 8th https://www.amazon.co.jp/dp/0470128720/

2013, 9th https://www.amazon.co.jp/dp/1118093755/

2018, 10th https://www.amazon.co.jp/dp/1119456339/

なかなか値が張る。9th までは O'Reilly Online Learning にあるので 9th をちらっと読んでみよう。ToC みて 10th めちゃくちゃ欲しい!となれば買おう。

https://www.os-book.com/OS10/index.html https://www.os-book.com/OS9/index.html

カーネル本より

1-3の 3. から

1.3 過去、未来  より

最近その卓越した地位も Microsoft 社の Windows や Windows NT オペレーティング・システムの出現によって脅かされている。デスクトップ市場のようなローエンドでは UNIX は戦いに負けたように見える。

 

1.3.2 UNIX の何が間違っているか  より

UNIX は素晴らしいオペレーティング・システムであるが、多くのユーザはオペレーティング・システムではなく、単純にある仕事をしてくれる能力だけを欲する。これらのユーザは基盤となるファイル・システム構造やプロセス・モデルの優雅さには興味を持っていない。ただ、特定のアプリケーションを最低のコストと手の掛からない方法で実行させることを望んでいる。

 

そうよねぇ。今も Windows なり macOS なり、使いたいアプリケーションがちゃんと動きさえすればいいとは思う。例えば、Windows Update がー、ソフトウェアアップデートがー、とかを気にしなくてもいい未来は死ぬまでに来るのかしら。スマホ、タブレットがそれに近いのかもしれない。使ったことがないけどもしかして Chromebook ?

 

この書籍読んでると、上に書いたようになかぐろでの表記がしばしばある。他のをいくつか挙げると、32ビット・マシン、ジョブ・コントロール、コマンド・ヒストリ、オリジナルの UNIX ソース・コード、デバイス・ドライバ、メッセージ・キュー、など。どれも今は「・」書かないんじゃないかな。当時はそういうものだったのか、訳者の好みだったのか。

なかぐろではないけど、カリフォルニア大学バークレー校と書かれたすぐ後にはカルフォルニア大学バークレー校と書かれていた。揺れている。

 

IBM の knowledge center はなかぐろってる。ナレッジ・センターとは書かれていないけど。

https://www.ibm.com/support/knowledgecenter/ja/SSFKSJ_9.0.0/com.ibm.mq.pro.doc/q002620_.htm

 

1.4 本書の意図 より

SVR4 には最も注意を傾けたが、4.3BSD や 4.4BSD、Mach にも十分な用紙を割いている。商業用 UNIX の中では本書は SunOSと Solaris 2.x に最大の用紙を割いた。それはただ単に、UNIX 市場における重要性だけでなく、Sun Microsystems 社がその後の基本リリースへの統合された多くの技術貢献の責任を負っていることと、これらのシステムに対する方の出版物のためである。

 「用紙を割いた」という表現は新鮮だった。紙面だと雑誌や新聞紙になる?紙幅なりページ数、頁数でもよさそうな。。 

 

読み終えたら単に「やっぱり Solaris はすごかったんだね」という感想になると予想。


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/


2020年11月23日月曜日

メッセージキュー再訪

某クラウドで RabbitMQ が発表されていた

https://aws.amazon.com/jp/about-aws/whats-new/2020/11/announcing-amazon-mq-rabbitmq/

昔の職場では SQS や EC2 上に入れた RabbitMQ をつかっていたなと思い出し、当時はこんなのをみたりしていた

Message Queue Evaluation Notes http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes

その数年後何かきっかけでメッセージキューのこの記事をみたり。https://postd.cc/dissecting-message-queues/

postd.cc の翻訳記事は以前ちょいちょい見ていたけど担当者いなくなったのかもはや更新されていないな。


ところでメッセージキューの歴史ってばどんなんだろうと wikipedia 見るも、あまりよく分からない。 https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%AD%E3%83%A5%E3%83%BC

歴史的には、メッセージキューはプロプライエタリな閉鎖的プロトコルとして使われ始めたもので、そのために異なるOSやプログラミング言語を含めた環境の構築が制限されていた。 

うーん、その歴史的なのが知りたいところ。

 

メッセージキューをより遍在的にする初期の試みとして、サン・マイクロシステムズJMS仕様があり、JavaによってクライアントAPIを抽象化して異機種間接続を可能にしていた。これによりJavaを使えばメッセージキューのプロバイダーを切り替え可能となっており、SQLによってデータベースの切り替えが可能になったのと似ている。しかし実際にはメッセージキューの技法やシナリオは非常に多様であり、JMSが常に有効というわけではない。

その JMS は 2001年からと。上の概要のところ見ると80年代初期には〜〜とはある。

 

VxWorksやQNXといったリアルタイムオペレーティングシステム (RTOS) では、メッセージキューを主要なプロセス間通信機構やスレッド間通信機構として採用している。これらの場合、リアルタイム性が重視されるため、メッセージキューとCPUスケジューリングが密に関連している。1980年代初期には、VRTX や pSOS+ といった RTOS でメッセージキューを使ったスレッド間通信機構が使われ始めた。 

組み込み系な方(かた)だと詳しいのかもしれないな。

QNX のサイトにそれらしいドキュメントあり。歴史的なものはわからない。

Message queues http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.user_guide/topic/limits_Mqueue.html

POSIX Message Queues: Two Implementations http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.technotes/topic/managing_mq_mqueue.html

POSIX 1003.1 と。 https://ja.wikipedia.org/wiki/POSIX_1003.1b

[サンプルプログラム] のとこに記載の企業見てみると RTOS 屋さん。RedHawk Linux 。

https://www.concurrent-rt.co.jp/products/redhawk-linux/

 

Solaris には System V メッセージキューというのがある(あった?)らしい。

https://docs.oracle.com/cd/E19683-01/816-3961/6ma74f435/index.html 


2020年3月21日土曜日

NのBSD

BSD magazine DVD 久しぶりにをみた流れから、また何かの *BSD でも入れてみるということに。

前 NetBSD に関して書いてたのが 2008年なのだけどその後も何度か入れてた気はする。
https://ktjtn.blogspot.com/2008/11/netbsd.html
この時は 4.0.1 入れてから current にしていた。

まぁ再び NetBSD をば。今は 9.0
http://www.netbsd.org/

で同じく current に更新。今もカーネルは "/netbsd" なんだね。

参照したドキュメント
http://www.netbsd.org/docs/guide/en/chap-updating.html#updating-summary
http://www.netbsd.org/docs/guide/en/chap-fetch.html

netbsd$ uname -mrs
NetBSD 9.99.50 amd64
netbsd$ stat -x /netbsd
  File: "/netbsd"
  Size: 27017856     Blocks: 48704        IO Block: 16384        Regular File
Device: 168,0   Inode: 2088111    Links: 1
  Mode: (0755/-rwxr-xr-x)         Uid: (    0/    root)  Gid: (    0/   wheel)
Access: 2020-03-20 20:58:35.908917327 +0900
Modify: 2020-03-20 20:55:38.784151909 +0900
Change: 2020-03-20 20:58:12.169217188 +0900
 Birth: 2020-03-20 20:55:38.231611786 +0900

current にする前、はて、ソース更新は今も CVS 使わないといけないのかなと調べてみると GitHub 上にミラーされていることがわかった。数時間おき。
上記の chap-fetch には書かれていない。

https://github.com/NetBSD/src#latest-sources
To fetch the main CVS repository:
cvs -d anoncvs@anoncvs.NetBSD.org:/cvsroot checkout -P src

To work in the Git mirror, which is updated every few hours from CVS:
git clone https://github.com/NetBSD/src.git

git は pkgin で入れ、その後 clone しようとするとエラーに。
netbsd# git clone https://github.com/NetBSD/src.git
Cloning into 'src'...
fatal: unable to access 'https://github.com/NetBSD/src.git/': SSL certificate problem: unable to get local issuer certificate
証明書ね、ということはわかるのだけどどうするのかしらと調べたところ同じエラーを reddit で発見

https://www.reddit.com/r/NetBSD/comments/dveadk/ssl_errors_with_git_and_curl/

・mozilla-rootcerts を入れる
netbsd# pkgin install mozilla-rootcerts

・ファイルは以下
netbsd# pkg_info -L mozilla-rootcerts
Information for mozilla-rootcerts-1.0.20191207:

Files:
/usr/pkg/sbin/mozilla-rootcerts
/usr/pkg/share/mozilla-rootcerts/cacert.pem
/usr/pkg/share/mozilla-rootcerts/certdata.txt

・git config で設定
netbsd# git config --global http.sslcainfo /usr/pkg/share/mozilla-rootcerts/cacert.pem

これでOK。NetBSD の CVS サーバの負荷増やすよりも GitHub の負荷を増やすのがマシだと思うのでよかったよかった。
よい子は安易に git config --global http.sslVerify false などとしてはいけないぞ。

しかしまぁ top なり ps でプロセスみると少ないこと少ないこと。すっきりしている。

ギョームでほぼ Linux ばかり触れてると良くも悪くもいつも見てる方が当たり前になってしまう。
やはりプロセスにしてもログにしてもだらだらとあれこれ起動してたり出てるのは好みでないな。
一見何を言ってるのかわからないログ(調べてみると影響ないから無視で良いというパターン)とか、存在意義が初見ではよくわからないプロセスとか。ログに書き出すこと自体は大事だけどね。。そのよくわからないおかげでご飯食べられているとも言えるので複雑な気持ちである。

2019年11月16日土曜日

ページ

少し調べることがあった。ここでは wikipedia だけ。

https://en.wikipedia.org/wiki/Page_(computer_memory)

でかいページの機能、 Linux だと ひゅーじぺーじず 、FreeBSD だと すーぱーぺーじず、Windows だと らーじぺーじず 。

Linux は 2.6 からある? THP は 2.6.38 から
wikipedia の通り FreeBSD は7.2-R から、ただしデフォルト無効。transparent かそうでないかの off/on はなく常に transparent のはず。↓とあるし

On Linux kernels supporting transparent huge pages, as well as FreeBSD and Solaris, applications take advantage of huge pages automatically, without the need for modification.

Windows だとかなり前からあるのか。

2019年5月21日火曜日

正誤表

前回
最近買った電子書籍ではない、とある技術書を頭からちょいちょいと読み進めてると早速誤りに気づく。
出版社のサイトに正誤表があり、すでに20箇所以上の誤りが掲載されていた。
しかし自分の見つけたものはまだ載っていなかった為、フォームから連絡しておいた。

いい加減、技術書の1刷を買うのはできる限り避けた方がいいのかねぇ。。
前回で書いた、やたら誤りが多い書籍と出版社が同じなのは気になる。校正(であってる?)がガバガバなんだろうか。
電子書籍なら更新するからそっちを、ということを暗に示しているのかとも思ってしまう。

2019年2月23日土曜日

リングの思い出

いま、稼働しているのは4つらしい。
 http://www.ring.gr.jp/

むかーしいた会社はミラーをやっていた時期があった。core.ring.gr.jp を向いてた時期もあったような・・・(?)
 About RingServer  や  Members, Organizations  は閲覧できないな。

多いときはこのくらいだったのかな。もっとあった気もする。
http://web.archive.org/web/20040901052958/http://www.ring.gr.jp/

今はミラーサイトといえば ftp.jaist.ac.jp を使うかなぁ。

2019年2月21日木曜日

ランダム

/dev/random を調べる機会が発生。

むかーし FreeBSD で rndcontrol なぞ設定したなと思いつつ。
FreeBSD だと Yarrow, その後の Fortuna(しばらく使ってなかったから Fortuna 知らなかったよ・・・)なんだけども、Linux だとこのへんどうなっているのかさっぱりわからず。

で冒頭の wikipedia です
https://en.wikipedia.org/wiki//dev/random

この辺見てればいいと思う。

It is also possible to write to /dev/random. This allows any user to mix random data into the pool. Non-random data is harmless, because only a privileged user can issue the ioctl needed to increase the entropy estimate. The current amount of entropy and the size of the Linux kernel entropy pool, both measured in bits, are available in /proc/sys/kernel/random/ and can be displayed by the command cat /proc/sys/kernel/random/entropy_avail and cat /proc/sys/kernel/random/poolsize respectively.

(snip)

The Linux kernel provides support for several hardware random number generators, should they be installed. The raw output of such a device may be obtained from /dev/hwrng.[8]

With Linux kernel 3.16 and newer,[9] the kernel itself mixes data from hardware random number generators into /dev/random on a sliding scale based on the definable entropy estimation quality of the HWRNG. This means that no userspace daemon, such as rngd from rng-tools, is needed to do that job. With Linux kernel 3.17+, the VirtIO RNG was modified to have a default quality defined above 0,[10] and as such, is currently the only HWRNG mixed into /dev/random by default.

The entropy pool can be improved by programs like timer_entropyd, haveged, randomsound etc. With rng-tools, hardware random number generators like Entropy Key, etc. can write to /dev/random. The programs dieharder, diehard and ent can test these random number generators.

(snip)

In October 2016 with the release of Linux kernel version 4.8 and newer, /dev/urandom was switched over to a ChaCha20-based implementation[16] by Theodore Ts'o, based on Bernstein's well-regarded stream cipher ChaCha20.


ChaCha20 とやらが出てきて DJB 先生の名を再び目にする、と。
ところで 暗号周り、それなりに「あっあれね」と理解できるにはなにが必要なんだろうな。
「40からはじめる暗号」とか「暗号の前に!この数学」みたいな何かあるといいのだけど。

2018年12月20日木曜日

正誤表

所有しているある技術書、正誤表をみるととても項目が多く、刷数が進んだものに買い替えたいくらいにひどい。わざわざ買い替えるよりむしろ交換してほしいくらい。

一度所有している技術書全て正誤表確認してみようかな・・。恐らくその書籍が最も誤りが多いと思うんだ。二桁後半(つまり50箇所以上)はなかなかないんじゃないか。

適当にほんの幾つか、持ってる書籍の正誤表を見てみると・・・

https://www.oreilly.co.jp/books/9784873117386/

10もない。

https://www.oreilly.co.jp/books/9784873113630/

30ちょっと。それなりに。ページ数は上のよりは多くて 672 ページ。

https://www.shoeisha.co.jp/book/detail/9784798149776

3つ。

https://book.impress.co.jp/books/1117101049#box-errata

17

https://github.com/LambdaNote/errata-gosyspro-1-1/issues

1刷だと22ということかな。ラベルついていないもの合わせると 37。

50以上あるのは 270ページちょっと。

2018年12月2日日曜日

strほげほげ

Linux カーネルでは 'strscpy' なるものがあるのを知る。3年前かららしい。

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=30c44659f4a3e7e1f9f47e895591b4b40bf62671

https://www.phoronix.com/scan.php?page=news_item&px=Linux-4.3-RC4-Released

OpenBSD が strlcpy をかなり前に繰り出してたけど actually nasty と言われていた。
なお strlcpy は OpenBSD 2.4 かららしいので20年前からあるもの。

https://lkml.org/lkml/2015/4/28/570
https://lwn.net/Articles/643140/

man / document
strcpy
strlcpy

The Linux Kernel API - String Manipulation

2018年12月1日土曜日

RISC-V

EC2ではARMが使えるようになったけども、はて RISC-V てどんなんだろうなと思う。

Linux での RISC-V 対応状況
Fedora
Debian
他のディストリビューションは見当たらず

Linux Foundation、RISC-Vの開発と普及でRISC-V推進団体と協業


BSD family
FreeBSD https://wiki.freebsd.org/riscv
NetBSD https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/arch/riscv/
ports には載ってない https://www.netbsd.org/ports/


RISC-V な記事
https://news.mynavi.jp/tag/risc_v/

今後楽しみですねぇ

2018年11月11日日曜日

ナウな監視

いわゆるOps、オペレーションエンジニア的な業務から離れて何年も経つ。

いまだと「さぁあれこれモニタリング設定しましょう♡」という場面では何を使うものなんだろうか。気になる。

Prometheus
Zabbix
Nagios / Icinga

Mackerel
Datadog
New Relic
AppDynamics


2018年9月23日日曜日

「時刻がずれる」とは

7年前に設定したこともあった。

今更ながらふと思ったのが、ハードウェアクロックがどうの、システムクロックがどうの、というのはどう理解していった/していくのがオーソドックスなんだろうか?ぐぐればだいたい何とかなる、というのはおいておいて・・。

https://qiita.com/ine1127/items/edb0a46b638265186650

のようにずれたときに疑う箇所は多い。

https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-configuring_the_date_and_time-hwclock

加えて、今 KVM, Xen などといった virtualization なものの内部をごそごそしていくときのイロハはなんだろう?
既に解ってるひとだとたんに「ソースを漁ればいいじゃん(いいじゃん)」ということになると思うんだけどね。

2018年9月10日月曜日

OmniOS #2

Extra リポジトリがある
https://omniosce.org/info/ipsrepos

https://pkg.omniosce.org/r151026/extra/en/catalog.shtml
30ほど。

$ pkg list -f -g https://pkg.omniosce.org/r151026/extra/
で見られる。

追加
$ sudo pkg set-publisher -g https://pkg.omniosce.org/r151026/extra/ extra.omnios

$ pkg publisher
発行元                   タイプ ステータス P 場所
omnios                      起点   オンライン F https://pkg.omniosce.org/r151026/core/
extra.omnios                起点   オンライン F https://pkg.omniosce.org/r151026/extra/

$ pkg search -p go OR python3 OR nginx
PACKAGE                                         PUBLISHER
pkg:/ooce/application/texlive@20170524-0.151026 extra.omnios
pkg:/ooce/developer/go-110@1.10.2-0.151026      extra.omnios
pkg:/ooce/developer/go-110@1.10.3-0.151026      extra.omnios
pkg:/ooce/developer/go-19@1.9.6-0.151026        extra.omnios
pkg:/ooce/developer/go-19@1.9.7-0.151026        extra.omnios
pkg:/ooce/runtime/python-36@3.6.5-0.151026      extra.omnios
pkg:/ooce/runtime/python-36@3.6.6-0.151026      extra.omnios
pkg:/ooce/server/nginx-112@1.12.2-0.151026      extra.omnios
pkg:/ooce/server/nginx-114@1.14.0-0.151026      extra.omnios
pkg:/ooce/server/nginx-common@1.0.0-0.151026    extra.omnios
pkg:/developer/swig@3.0.12-0.151026             omnios

ダウンロードに結構時間がかかる。大企業がバックについてないのはしんどいだろうな・・・。CDN 会社がインフラ提供してくれるわけでもなし。

/opt/ooce/bin に入る。symlink が張られている

$ go version
-bash: go: command not found
$ echo $PATH
/usr/bin:/usr/sbin:/sbin:/usr/gnu/bin
$ pkg contents go-110 |grep bin/go
opt/ooce/bin/go
opt/ooce/bin/gofmt
opt/ooce/go-1.10/bin/go
opt/ooce/go-1.10/bin/gofmt

$ export PATH=$PATH:/opt/ooce/bin
$ go version
go version go1.10.3 solaris/amd64

$ go get golang.org/x/tour/gotour
go: missing Git command. See https://golang.org/s/gogetcmd
package golang.org/x/tour/gotour: exec: "git": executable file not found in $PATH

あ〜、そうよね・・

$ sudo pkg install pkg:/developer/versioning/git@2.17.1-0.151026
Password:
   インストールするパッケージ:         1
                  ブート環境の作成: いいえ
バックアップブート環境の作成: いいえ

ダウンロード                 パッケージ  ファイル  転送 (MB)  速度
完了                                   1/1       377/377    25.1/25.1  992k/s

フェーズ                                  項目
新しいアクションをインストールしています     691/691
パッケージ状態データベースを更新しています      完了
パッケージキャッシュを更新しています         0/0
イメージ状態を更新しています      完了
スピード検索データベースを作成しています      完了
検索インデックスを読み取っています      完了
検索インデックスを更新しています         1/1
パッケージキャッシュを更新しています         2/2

python3 も入れ
$ pkg search -p python3
PACKAGE                                    PUBLISHER
pkg:/ooce/runtime/python-36@3.6.5-0.151026 extra.omnios
pkg:/ooce/runtime/python-36@3.6.6-0.151026 extra.omnios
$ sudo pkg install pkg:/ooce/runtime/python-36
Password:
   インストールするパッケージ:         2
            変更するメディエータ:         1
                  ブート環境の作成: いいえ
バックアップブート環境の作成: いいえ

(snip)

$ pkg list python-36
NAME (PUBLISHER)                                  VERSION                    IFO
ooce/runtime/python-36 (extra.omnios)             3.6.6-0.151026             i--


はて ntpd はどう起動させておくんだろう.. chkconfig でも systemctl でもないよな...

$ pkg search ntp
INDEX      ACTION VALUE                                 PACKAGE
basename   dir    usr/share/ntp/lib/NTP                 pkg:/service/network/ntp@4.2.8.12-0.151026
basename   dir    usr/lib/python2.7/vendor-packages/ntp pkg:/service/network/ntpsec@1.1.0-0.151026
basename   dir    var/ntp                               pkg:/service/network/ntpsec@1.1.0-0.151026
basename   dir    usr/share/ntp                         pkg:/service/network/ntp@4.2.8.12-0.151026
basename   dir    var/ntp                               pkg:/service/network/ntp@4.2.8.12-0.151026
basename   file   etc/security/auth_attr.d/ntp          pkg:/service/network/ntpsec@1.1.0-0.151026
basename   file   etc/security/prof_attr.d/ntp          pkg:/service/network/ntpsec@1.1.0-0.151026
basename   file   etc/security/auth_attr.d/ntp          pkg:/service/network/ntp@4.2.8.12-0.151026
basename   file   etc/security/prof_attr.d/ntp          pkg:/service/network/ntp@4.2.8.12-0.151026
basename   file   lib/svc/method/ntp                    pkg:/service/network/ntp@4.2.8.12-0.151026
pkg.fmri   set    omnios/service/network/ntp            pkg:/service/network/ntp@4.2.8.12-0.151026
$ pkg list ntp
NAME (PUBLISHER)                                  VERSION                    IFO
service/network/ntp                               4.2.8.12-0.151026          i--
$ pgrep ntpd

$ cat /etc/ntp.conf
cat: cannot open /etc/ntp.conf: No such file or directory

/etc/inet にあるのか
$ ls /etc/inet
datemsk.ndpd      ike               ipaddrsel.conf    ipsecalgs         netmasks          ntp.conf          secret
hosts             inetd.conf        ipnodes           ipsecinit.sample  networks          protocols         services

$ egrep '^(server|pool|restrict)' /etc/inet/ntp.conf
restrict default ignore
restrict -6 default ignore
restrict 127.0.0.1      # Allow localhost full access
restrict -6 ::1         # Same, for IPv6
restrict source nomodify noquery notrap
pool 0.omnios.pool.ntp.org burst iburst minpoll 4
$ dig 0.omnios.pool.ntp.org +short
213.199.225.30
108.59.2.24
195.186.1.101
213.198.55.2

なるほど svcadm のようだ. こいつは SMF とやらで Solaris 10 かららしい.
$ which svcadm
/usr/sbin/svcadm
$ svcadm
Usage: svcadm [-S <state>] [-v] [-Z | -z zone] [cmd [args ... ]]

        svcadm enable [-rst] [<service> ...]    - enable and online service(s)
        svcadm disable [-st] [<service> ...]    - disable and offline service(s)
        svcadm restart [-d] [<service> ...]     - restart specified service(s)
        svcadm refresh [<service> ...]          - re-read service configuration
        svcadm mark [-It] <state> [<service> ...] - set maintenance state
        svcadm clear [<service> ...]            - clear maintenance state
        svcadm milestone [-d] <milestone>       - advance to a service milestone

        Services can be specified using an FMRI, abbreviation, or fnmatch(5)
        pattern, as shown in these examples for svc:/network/smtp:sendmail

        svcadm <cmd> svc:/network/smtp:sendmail
        svcadm <cmd> network/smtp:sendmail
        svcadm <cmd> network/*mail
        svcadm <cmd> network/smtp
        svcadm <cmd> smtp:sendmail
        svcadm <cmd> smtp
        svcadm <cmd> sendmail

$ svcadm enable ntpd
svcadm: Pattern 'ntpd' doesn't match any instances
$ svcadm enable ntp
$ pgrep ntpd
1442
$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.omnios.pool.n .POOL.          16 p    -   16    0    0.000    0.000   0.000
+a.ntp.br        200.160.7.186    2 u   13   16    3  280.799   12.676   5.483
*stratum2-3.ntp. 129.70.130.70    2 u   18   16    3  268.926   14.583   5.504
+ns3.atlax.com   131.188.3.221    2 u    2   16    7  318.398    8.018   7.748
+zip.frizzen.net 180.165.246.68   3 u    2   16    7  128.834    9.200   6.377

svcs でどんなか見られる
$ svcs ntp
STATE          STIME    FMRI
online         22:08:21 svc:/network/ntp:default

disable にする
$ svcadm disable ntp
$ svcs ntp
STATE          STIME    FMRI
disabled       22:09:30 svc:/network/ntp:default

再びenable
$ svcadm enable ntp
$ svcs ntp
STATE          STIME    FMRI
online         22:09:36 svc:/network/ntp:default

svcs -? みればだいたいOK

$ pkg search -p gcc
PACKAGE                                          PUBLISHER
pkg:/ooce/developer/ccache@3.3.6-0.151026        extra.omnios
pkg:/developer/gcc44@4.4.4-0.151026              omnios
pkg:/developer/gcc5@5.5.0-0.151026               omnios
pkg:/developer/gcc6@6.4.0-0.151026               omnios
pkg:/developer/gcc7@7.3.0-0.151026               omnios
pkg:/system/library/gcc-4-runtime@4.8.1-0.151026 omnios
pkg:/system/library/gcc-runtime@7-0.151026       omnios

今どきは gcc バージョンどれか・・・ 7入れておけばいいか
$ sudo pkg install gcc7
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/gcc-7/libexec/gcc/i386-pc-solaris2.11/7.3.0/lto-wrapper
Target: i386-pc-solaris2.11
Configured with: ./configure --prefix=/opt/gcc-7 --host i386-pc-solaris2.11 --build i386-pc-solaris2.11 --target i386-pc-solaris2.11 --with-boot-ldflags=-R/opt/gcc-7/lib --with-gmp-include=/usr/include/gmp --enable-languages=c,c++,fortran,lto --enable-__cxa_atexit --without-gnu-ld --with-ld=/bin/ld --with-as=/usr/bin/gas --with-gnu-as --with-build-time-tools=/usr/gnu/i386-pc-solaris2.11/bin --disable-bootstrap
Thread model: posix
gcc version 7.3.0 (GCC)

不定期でつづく

2018年9月9日日曜日

OmniOS CE

ギョームでは Linux, Windows とだけ戯れている。

ときどき気分を変えて別のを触ってみたくなるので *BSD 以外だと何かあったかな〜。そういや Solaris て今どうなってたかな〜、Open Solaris とか OpenIndiana てどうなったんだっけ・・とごそごそ調べてると OmniOS というのを知る。

https://omniosce.org/

illumos 族はこちら https://wiki.illumos.org/display/illumos/Distributions

https://omniosce.org/about/about.html
もともとは OmniTI ってところがやってたけど2017/4で終了、その後 Community Edition になった模様。MRTG, RRDTool 作者の名前をここで目にするとは・・・!

https://omniosce.org/download.html をみると AMI もあるので EC2 で使えてよろしい。しかし ENA は使えないだろうな。NVMe は使えるか・・?(後述)
https://ja.wikipedia.org/wiki/NVM_Express#Operating_system_support

OmniTI は今は AWS のコンサルティングパートナーのよう。https://omniti.com/knows/amazon-cloud-databases
https://omniti.com/remembers/2018/omniti-officially-named-aws-consulting-partner

https://www.crunchbase.com/organization/omniti
Founder の名前に見覚えあり。ウェブオペレーション一章の寄稿者だった。巻末の寄稿者紹介に OmniTI の創立者て書いてあったわ・・・。


とりあえず入れた。

$ uname -a                                                                                         
SunOS omniosce 5.11 omnios-r151026-673c59f55d i86pc i386 i86pc
$ ssh -V                                                                                          
OpenSSH_7.6p1, OpenSSL 1.0.2o  27 Mar 2018

pkg コマンドでパッケージ入れられるようだけどあまりなさそう。パッケージシステムと
しては IPSらしい。https://en.wikipedia.org/wiki/Image_Packaging_System

sysctl はないのか。
fstab でなくて vfstab なのか。しかし / が ない・・・?

$ cat /etc/vfstab
#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
/devices        -               /devices        devfs   -       no      -
/proc           -               /proc           proc    -       no      -
ctfs            -               /system/contract ctfs   -       no      -
objfs           -               /system/object  objfs   -       no      -
sharefs         -               /etc/dfs/sharetab       sharefs -       no      -
fd              -               /dev/fd         fd      -       no      -
swap            -               /tmp            tmpfs   -       yes     -

/dev/zvol/dsk/rpool/swap        -       -       swap    -       no      -

swap が /dev/zvol .
インストーラで ZFS を用意してまっせ的メッセージでてたな・・・。いや〜 ZFS わからん・・・。FreeBSD で軽くおさわりした程度、/ を ZFS で使ったことがない。

$ zfs listNAME                USED  AVAIL  REFER  MOUNTPOINT
rpool              2.56G  12.5G    23K  /rpool
rpool/ROOT          504M  12.5G    23K  legacy
rpool/ROOT/omnios   504M  12.5G   504M  /
rpool/dump         1.00G  12.5G  1.00G  -
rpool/swap         1.06G  13.5G  32.8M  -

$ zfs mount
rpool/ROOT/omnios               /
rpool                           /rpool


ZFS に関してはこのへんみてればいいのか?
http://open-zfs.org/wiki/Documentation
https://www.freebsd.org/doc/handbook/zfs.html

NVMe具合確認。ドライバはこんな具合に。使えそうな気配。ixgbevf はない。
 $ ls -l /kernel/drv/amd64/ixgb* /kernel/drv/amd64/nvme
-rwxr-xr-x   1 root     sys       104248 5月  3 22:30 /kernel/drv/amd64/ixgb
-rwxr-xr-x   1 root     sys       359376 9月 10  2018 /kernel/drv/amd64/ixgbe
-rwxr-xr-x   1 root     sys        74136 9月 10  2018 /kernel/drv/amd64/nvme

4053 Add NVME Driver Support to Illumos
https://github.com/illumos/illumos-gate/commit/3c9168fa8e9c30d55b3aa2fde74bd7da46df53f5


勝手が違ってそれはそれで面白い。わからなさがかなりある。

top もない・・・
/proc の下も Linux と違い色々生えてない。

しばらくは Linux でのアレは Solaris でなにに相当するの?というのを調べることにもなる。

しかしこう Linux ではない別のOSを触ってみて勝手が違うのに直面すると、多くのひとが頑張ってなにかの OS (特に GNU/Linux )を触る必要はなく、ただコンピュートリソースとして使えれば裏でなにが動いてるか意識する必要はないだろうし、上モノさえよろしく動いてれば幸せだよな、と思った。
触る必要のないひとが触らざるを得ないのは辛いよな。

どういうわけか自分のなかでは Google App Engine はすごいよな、というところに行き着く。


ところで Oracle Solaris は 11.4 がでていた。
https://news.mynavi.jp/article/20180829-685663/

http://www.atmarkit.co.jp/ait/articles/1805/15/news001.html
『Oracleは、“少なくとも”2034年まではSolarisの開発を継続することを公式にお約束しています。誤解しないでいただきたいのですが、2034年でやめるということではありません。最低でも2034年まで、つまりあと16年は開発を継続するということです。』

知らなかった・・・。生き長らえた Solaris でお仕事が得られる人いるかも・・?
Oracle にはもっと Solaris 頑張って欲しかったねぇ。先行き不安でなければいちいち 2034年まで継続するよ、なんぞ言わんし・・・。突如 discon よりはるかにいいけども。