地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

Linux/Unix

【Linux】ファイルマスクのメモ

整形ツールの無い環境でパーミッションマスクが見辛かったのでメモ。そのうちpythonあたりでパーサ書こう。 S_ISUID 0004000 set-user-ID bit S_ISGID 0002000 set-group-ID bit (下記参照) S_ISVTX 0001000 スティッキービット (下記参照) S_IRWXU 00700 フ…

【Linux】IOバウンドの処理はどの程度まで並列数を上げればよいかの考察

概要 IOバウンドについて考える機会があったのでその辺の話についてまとめてみた。ちなみにブロッキングIOしか出てきません。以下の本が大体の参考になってます。 www.amazon.co.jp 忙しい人向け 結論としてはIOバウンド(ネットワーク起因)な処理はコア数関…

【Linux】カーネル関数「account_user_time()」は何をしているのか

概要 ユーザーCPU時間って何だっけってなって寝落ちしたままなのでこの辺から追ってく。https://t.co/bfJdMKR5rb— Ryuichi@k8s再入門中 (@ryuichi_1208) 2021年2月13日 謎にCPUのユーザ時間ってなんだって疑問が出てきたので調べた。 CPU使用率とは CPUは、…

【Linux】メモリに関するメモ

メインメモリ:物理メモリとも。一般に DRAM で提供される 仮想メモリ:メインメモリの抽象。実メモリではない。 常駐メモリ:現在メインメモリにあるメモリ。 無名メモリ:ファイルシステム位置やパス名を持たないメモリ。ヒープ(プロセスのアドレス空間内…

【memcached】スピンロックでatomic操作を実現するためには

概要 マルチプロセス環境配下における、同一レコードへの書き込みが大量に発生するwrite heabyな環境でmemcachedの更新をどうやってatomicに行うかを考えた時に出てきたスピンロック的なことやってみた記事。 memcachedとは書いたもののCAS操作を提供してい…

【Linux】JVM系言語以外でも暖気運転は効果があるのかの考察

記事概要 JVM言語で話題の暖気運転についてJVM系言語(JIT)以外でも暖気運転は効果があるのかを考察した記事です。何かしらのベンチマークを取ったとかではないのでご注意ください。 JVMとの比較にはPythonとかPerlとかLL系言語かつpreforkで動くウェブアプリ…

【Ubuntu】stressコマンドで負荷を上げる

snapcraft.io CPUを目いっぱい使いたい場合に指定するオプションです。 実行すると、CPU使用率が100%程度に達します。 なお、stress-ngを使うと、CPU使用率を指定できるようになります 使い方は、「stress-ngコマンドの使い方」を参照してください。

【Linux】負荷テスト

負荷テストをやる目的 一般的には、システムが、特定のワークロードの元で、応答性(responsiveness)、安定性(stability)の面で、どの程度動作するかを測定するのが目的。さらに最近だとインフラがスケールするのが前提だったりするのでスケーラビリティ…

【Linux】ssコマンドのSend-Q/Recv-Q

ssってあまりなじみないけどこの一個前の記事書きながら状態を見るのに使ってみた。Send-Q/Recv-Qの値がそれぞれ何を意味してるのかを調べてみた。 サーバアプリ ネタバレするとsocketの状態次第でssの出力の意味は変わってくるらしい。listen状態の場合はSe…

【Linux】TCPの再送制御あたりのソースを眺める

概要 ブラウザからWebサーバを経由しAPサーバにアクセスする場合の通信に関する説明をざっくりまとめてみました。再送制御あたりがメインです。 記事を書こうと思った背景 AWSの資格学習をしていてRDSあたりのフェールオーバ ーあたりで「DNSベースでやるの…

【Linux】new macについてのリーナスの回答

www.realworldtech.com リーナスへの質問でM1 macについてどう思うかの回答があった。Linuxが動くなら欲しいと回答している。ARMベースのラップトップはずっと欲しかったらしい。 どこかしらはARMベースのmacでLinuxを動かそうとしてるプロジェクトはあるだ…

【Linux】autofsと始めるNAS

autofsとは 自動的に適切なファイルシステムをマウントするためのクライアント側のサービスです。クライアントが現在マウントされていないファイルシステムをアクセスしようとすると、autofs ファイルシステムはその要求に介入し、automountd を呼び出して要…

【Linux】net.core.(r|w)mem_maxあたりの話

概要 netstatの実行でたまに見るSendQとかRecvQの値の決定はどこで行っているかを確認した際のメモ Send-Q/Recv-Qとは Recv-Q このソケットに接続されたユーザープログラムに渡されなかったデータのバイト数。 Send-Q リモートホストに受け入れられなかった…

【Ansible】grusterfsのブリックの設定をansibleでやる。

シェルスクリプトでゴリ押ししてたけど公式が良さげなモジュールを作ってくれていることに気づいた。ブリック関連の作成削除はこっちでやっても良さげかもしれない。 docs.ansible.com - name: create gluster volume with multiple bricks gluster.gluster.…

【C】signalfd + epoll のサンプル

typedef enum { MYOP_ERROR = -1, MYOP_NONE = 0, MYOP_QUIT, MYOP_WAITCHILD, /* snip */ } MyOperation_t; /** * AnalyseEvent - epoll_eventから任意のコマンドIDを導く */ MyOperation_t AnalyseEvent (struct epoll_event *event) { if (event->data.fd…

【TCP】TCPサーバーの非同期処理

手法 メリット デメリット select メモリやリソース消費が抑えられる 扱えるディスクリプタに制限がある一つのソケットの送受信処理の間に他のソケットを扱えない poll メモリやリソース消費が抑えられるディスクリプタ制限なし 一つのソケットの送受信処理…

【Linux】TCP keep aliveのパラメータ

① net.ipv4.tcp_keepalive_time 『TCP コネクション開始から KeepAlive の送信を開始するまでの時間』を指定します。単位は sec 、デフォルトでは 7,200 sec = 2時間です。(Windows と同じです) ② net.ipv4.tcp_keepalive_intvl 『KeepAlive 送信開始後、何…

【Linux】特殊ファイルシステム

名前 マウントポイント 説明 bdev ブロック型デバイス devpts /dev/pts 疑似端末の提供 eventpollfs 効率の良いイベントポーリング機構が利用 futexfs futex(ユーザ空間のロック機構)が使用 pipefs パイプをFIFOとして扱う proc カーネルデータ構造へのアク…

【Linux】メモリに負荷をかけるツール

#! /bin/bash # "--bytest 5000000" is 500MB. echo PID=$$ echo -n "[ Enter : powerup! ] , [ Ctrl+d : stop ]" c=0 while read byte; do eval a$c'=$(head --bytes 5000000 /dev/zero |cat -v)' c=$(($c+1)) echo -n ">" done echo

【Linux】複数バージョンのGCCを同居させる

1.はじめに LinuxOSに付属する既存のコンパイラgcc/g++に加えて別のgcc/g++を導入すると動的リンクのライブラリの問題が発生する事があります。メモとして残します。 環境: CentOS6.7/32bit (64bitではありません) OS付属のコンパイラ: gcc/g++ version 4.4.…

【Linux】GCCのバージョンアップ

gcc バージョンアップ gcc の7.3.0取得 ````bash wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.3.0/gcc-7.3.0.tar.gz 取ってきたものを解凍します。 tar zxvf gcc-7.3.0.tar.gz 取得してきたgcc をビルドします。 cd gcc-7.3.0 ./contri…

【Linux】lsofの使わずにポート開いてるプロセスを特定

lsofの仕組み?

【Linux】livevent 入門

libeventは、スケーラブルなネットワークサーバを開発するためのイベント通知ライブラリです。 libevent APIは特定のイベントがファイルディスクリプタに発生するか、タイムアウトに達した場合に、コールバック関数を実行するためのメカニズムを提供します。…

【Linux】非同期IOのカーネルパラメータ

fs.aio-max-nr = 131072 アクティブな非同期の全入出力コンテキスト内で許可されるイベントの最大数 access.redhat.com

【Linux】サーバに入ったらやるよね?ってコマンド

初めて入るサーバはワクワクします。 「どんなスペック?」「どんな構成で動いてるんだろ?」 ってなるのでそんな時に使えるコマンド集

【Linux】lsコマンド

いまさらですが、lsコマンドについてまとめます。 lsコマンド list segmentsの略。 ファイルやディレクトリの情報を表示する。 $ ls a.txt b.txt c.txt test test2 上記コマンドでカレントディレクトリ内のファイルの一覧を表示する。 ls -a : すべてのファ…

【Linux】net.ipv4.tcp_tw_reuse=1

webサーバに置けるTCP TIME_WAIT

【Linux】ロードバランサ L4 L7

ロードバランサ

【Linux】mm_struct は何してるか

mmap: vm_area_struct の先頭を保持する。 mm_rb: メモリエリアを高速に探すための red-black tree を保持する。 mmap_cache: メモリ参照の局所生(locality)を生かして高速化するためのもの。 pgd: page global drectory へのポインタ。後述。 mm_users: 共…

【Linux】linux 削除したファイルを復活させることができるかもしれない話

かもしれない