コンピュータ業界でよく出る英語略語集
様々なコンピュータ業界にあるDocumetnsを読んでいると初見ではなんの略語なのかわからない英語の略語が登場し、 さっぱり意味がわからないということが多くあります。このような略語のせいで記憶の定着に悪い影響を 与え、学習効率の低下をももたらしているのは間違いないでしょう。更に、読み方がわからないとコミュニケーションの 伝達がうまく行えず、音と言葉の結びつきも悪いためこれもまた記憶の定着の阻害要因となってしまいます。
コマンドラインのshorthand(簡略表記)の引数がたくさん並ぶと辛いものがあってよく使用するがいつまでたっても 中身を理解できないのもこれと同様だと思います。下記の例は、エルフとして覚えてしまっていて、 中身はと言われるといちいちまいど調べるみたいなことになるやつです。1
$ ps elf
そこで今回このような記事を書こうと思い至りました。
はじめは小さく、大きくスケールした際に、細かくジャンル分けしていき、 今回はリストということで随時更新という形を取りたいと思います。
方針
- IT独自の略語はできる限り一次ソースをあたり、short for、abbreviation forのような記述を探す
- もしなければ、「用語 stand for」、「用語 abbreviation」で探す
- それでもなければ、その用語自体の略語を英語検索し、推測する
- 読み方(pronounce)に関しては、Youtubeを主体としてネイティブがどのように言っているのかを参考にする
- あくまで目的は略語であるため、用語のコンテキストに関しては最低限に留め、情報が多い場合は関連ページを貼る
- 頭字語(acronym)に関してもわかりにくいものは扱う
Linuxカーネル周り
vm (Virtual Memory) - 仮想メモリ。実際には物理メモリを直接操作しなく、仮想メモリ空間内でプロセスを処理している。
単純にこの表記がVirtual Machineと結びつきすぎて思い込みでswappinessの項目を見てました。
$ sysctl -a | grep swap vm.swapiness = 1
fd (ファイルディスクリプタ) - プロセスとファイルを結びつける識別子。
$ cat /proc/$(pgrep mysqld)/fd | wc -l
nr (number) - カーネルパラメータやawkの行ナンバー(NR)として出てくる。推測だが、ドイツ語でのNummerの略記はNo.じゃなくてNrだからそうなっているかもしれない。
NRを見てると、頭字語が多すぎて辛い感がある。
$ sysctl -a | grep nr ... fs.nr_open = 1048576 ... vm.nr_hugepages = 0 vm.nr_hugepages_mempolicy = 0 vm.nr_overcommit_hugepages = 0 vm.nr_pdflush_threads = 0
net.core.somaxconn (socket max connection) - (so-max-connection)と発音している気がする。最大TCPセッションのキュー数。
shm (shared memory) - 共有メモリ。シャムじゃしっくりこないので、そのままシェアードメモリと読んでいいんじゃないかと個人的に思っている。
これ見るたびにsyamu_gameを彷彿していた。
コマンドライン
色々見ているとmanにはなくて、逆にwikiやStackexchange、Stack Overflowのstand forで見つかることが多い気がする。
**dd (Data Definition) - 下記にあるような歴史的背景があるよう。ジョークで"disk destroyer"、"data destroyer"、"delete data"の略として言われることもあるみたいです。
Wikipedia (dd) asserts it was named after IBM JCL command DD which stands for Data Definition.
lsof (list open files) - lsof(8)
du (disk usage) - du(1)
df (disk free) - df(1)
続く
随時更新
Elaticsearchのパフォーマンス設定項目 Part.1
この記事はAwesomeのScalable Infrastructure and performanceとそれに関する記事を元に 作成した記事になります。したがって、Javaのチューニングに関しては取り扱っておりません。別途機会があれば記事にしたいと思います。
メモリ領域の設定
今回はメモリ領域に絞って設定方法を見ていきたいと思います。
メモリがスワッピングするのをロックする
当たり前ですが、検索に大きく影響を与えてしまうスワッピングを避けることが。まず第一義として挙げられます。 スワッピングはメモリがオーバーフローした際に、スワップデバイス(物理ディスクにある領域)を利用し、OOMを防ぐ緩衝材 になっているものなので、実際の速度は1000倍近くも遅く、本番環境でこの領域を使用することは避けないといけません。
ElasticsearchではJavaのガベージコレクションがヒープの各ページを割り当てます。
システムコールmlockall()でJVM内のヒープをブロックするための設定がElasticsearchには備わっており、
以下の設定をconfig/elasticsearch.yml
に加えることで達成できます。
5.X以前
bootstrap.mlockall: true
5.X以降
bootstrap.memory_lock: true
設定の反映にはElasitcsearchの再起動が必要になるので、設定をし再起動してください。
設定は以下のリクエストを送ることで確認できます。
curl -XGET localhost:9200/_nodes?filter_path=**.mlockall
正しく返ってくると、以下のようなレスポンスが生じされると思います。
{"nodes":{"VyKDGurkQiygV-of4B1ZAQ":{"process":{"mlockall":true}}}}
もし、JVMのヒープをロックすることが失敗したら、実行ユーザに権限が与えられていない 可能性が高いため、次の項目を実施してみてください。
- rootユーザで
ulimit -l unlimited
を実行する、もしくは/etc/limits.confのmemlock
をunlimitedに設定する - RPMやDebianを使用している場合は、
MAX_LOCKED_MEMORY
にunlimited
を設定する - systemdを使用している場合は、systemd configuration内で、
LimitMEMLOCK
をinfinityに設定する
十分なヒープサイズを設定する
上記を設定した場合、十分なヒープメモリ領域が必要なので、(デフォルトでは1GB)
ES_HEAP_SIZE
を設定するか、実行時のフラグで設定するようにしてください。
優先度的にはES_HEAP_SIZE
が大きいです。
export ES_HEAP_SIZE=10g
ES_JAVA_OPTS="-Xms10g -Xmx10g" ./bin/elasticsearch
スワップを無効にする
スワップ領域そのものを無効にするのも方法としてはあります。
一時的に変更する場合はsudo swapoff -a
を実行、永続化させるには/etc/fstab
のswapの項目をコメントアウトして下さい。
swapiness
sysctl
のvm.swapiness=1
に設定することで、スワッピングする代わりにページキャッシュの領域を
使用しやすくなります。おそらくですが、0にしてしまうとあまり使用しないシステム領域のようなスワッピング
してもパフォーマンスに問題ないような項目までもが拒否されるので0にしないほうがいいと思われます。