タグ

linuxに関するkwyのブックマーク (437)

  • Dockerホストのパフォーマンスを引き出すTCPカーネルパラメータチューニング

    もう半年くらいフルDockerでmicroservicesなサービスを運用してるんですが、イマイチパフォーマンスを出し切れていないなという面がありまして、今回DockerホストのTCPカーネルパラメータを抜的に見直しました。 そしたら劇的に症状が改善して、インスタンス数も削減できた上に安定してメシウマ状態になったので紹介します。実際効果があったのでチューニングポイントとしてはある程度正解であったと考えていますが、もちろん扱ってるアプリケーションの特性にもよるはずなので一つのケーススタディであることをご了承頂ければと。 前提 まずは今回のお話の前提を。こんな環境です。 EC2 c3.xlarge ホストはUbuntu(EC2 Optimized AMIは未使用) Docker 1.11.2 MySQL(HAProxy経由)やRedisへのデータストアの通信、各microservicesへの

  • プロセスのVSZ,RSSとfree,meminfo挙動を実機で確認 - のぴぴのメモ

    1.はじめに 1-1.この記事の要旨 1-2.(予習)メモリに関する指標とlinuxのメモリ挙動について 2.検証環境と検証方法 2-1.検証環境 2-2.検証方法 2-3.測定方法 (1)psコマンドによるVSZ,RSS情報の取得 (2)freeコマンドとmeminfo情報の取得 3.結果 3-1.全体の結果 3-2.プロセスのVSZ/RSS挙動 ポイント① malloc()した時の挙動→VSZのみ増加 ポイント② 1回目のデータread時→RSSは増えない ポイント③ データwrite→RSSが増加する 3-3.システムワイドな挙動(freeコマンド/meminfo) ポイント① malloc()した時の挙動→usedもAnonymousPageも増えない ポイント②1回目のデータread時→変化しない。 ポイント③ データwrite→used上昇、AnonymousPage上昇 4.

    プロセスのVSZ,RSSとfree,meminfo挙動を実機で確認 - のぴぴのメモ
  • 「ふつうのLinuxプログラミング」でLinuxの基本概念やシェルの仕組みについて学んだ - $shibayu36->blog;

    最近golangでCLIツールを作っていたのだけど、Linuxのお作法とかいまいち分かっていなかった。そこでそのあたりのことが学べそうな「ふつうのLinuxプログラミング」を読んだ。 ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるgccプログラミングの王道 作者:青木 峰郎SBクリエイティブAmazon このLinuxにおいてC言語でプログラミングする方法を、Linuxでの重要な概念も含めて教えてくれる。このを読めばとりあえずC言語を使ってLinux用のプログラムを書き始めることが出来るようになりそうだった。 それでC言語を使わない場合でも役に立つの?ということだけど、非常に役立ちそうで面白かった。なぜなら、単なるプログラミングの方法を教えてくれるだけではなくて、 Linuxの重要な考え方をファイルシステム・プロセス・ストリームという概念にまとめて教えてくれ

    「ふつうのLinuxプログラミング」でLinuxの基本概念やシェルの仕組みについて学んだ - $shibayu36->blog;
    kwy
    kwy 2017/11/13
  • 定期的にtcpdumpをある期間だけ実行したいという時 - その手の平は尻もつかめるさ

    tcpdumpの提供する-Wオプションと-Gオプション,ならびにcrontabを併用するといける. tcpdumpの-Wオプションはログローテーションを行う回数で,-Gはそのローテーション期間を秒数で指定できる. 例えば $ tcpdump -w ./%Y%m%d%H%M%S.pcap -W1 -G60などとやると,ログローテーション1回,ローテーション期間は60秒となるので,つまり60秒tcpdumpを実行した後にexitする (ローテーション1回指定なので). ちなみに-wオプションで指定するファイル書き出し先についてはstrptimeと同じフォーマットが利用できるのでこういう時に便利. あとはcrontabでこのコマンドを仕込んでやるとOK (id:hirose31さんから「crontabでは%をエスケープする必要がある」との指摘があり修正しました). 55 * * * * tcpd

    定期的にtcpdumpをある期間だけ実行したいという時 - その手の平は尻もつかめるさ
    kwy
    kwy 2017/11/10
  • Linuxのschedのpriorityとリアルタイムシステムについて - Qiita

    はじめに Linuxでいわゆるリアルタイムシステムを指向するときはsched(7)のpriority値を意識することになるが、個人的にいつもpriorityの値を相対的にしか見られず、絶対的にかつどっちが上・下かについてわからなくなってしまうので、そんな自分のためにメモ書きしておくことにした・・・つもりが、なにか途中から趣旨を間違えた記事になってしまった。当は「priority一覧表」がほしかっただけだったのに... なお、Linux-4.10くらい、procps-ng-3.3.12くらい、util-linux-2.29.2くらいを見ています。 schedのpolicyとpriority値 Linuxでは、ユーザプログラム・kernelスレッド問わず、タスクにsched policyを設定できる。下記の上3つがいわゆるリアルタイムスケジューリング、下3つがいわゆるタイムシェアスケジューリ

    Linuxのschedのpriorityとリアルタイムシステムについて - Qiita
    kwy
    kwy 2017/05/25
  • 俺は Linux コンテナについてなんにも解っていなかった 〜 haconiwa で学ぶ Linux コンテナ (1) 〜 - ようへいの日々精進XP

    追記 直近の Docker 界隈について Linux コンテナ 参考 Linux コンテナとは Linux コンテナを構成する主な機能 OS リソース毎の Namespace cgroup サブシステム こんなにざっくりでは、Linux コンテナは語れないと思うけど haconiwa haconiwa とは haconiwa で何が出来ると? haconiwa 導入 はじめての haconiwa (1) はじめての haconiwa (2) 〜 コンテナ作成 〜 はじめての haconiwa (3) 〜 コンテナ起動 〜 haconiwa で学ぶ Linux コンテナ .haco ファイル再掲 namespace を弄る前に namespace uts namespace pid 俺は Linux コンテナについてなんにも解っていなかった(まとめ) haconiwa は Linux コンテ

    俺は Linux コンテナについてなんにも解っていなかった 〜 haconiwa で学ぶ Linux コンテナ (1) 〜 - ようへいの日々精進XP
  • 原理原則で理解するbashの仕組み - Qiita

    はじめに 以前書いたエントリー、重大な脆弱性(CVE-2017-5932)で少し話題になったbash4.4の補完機能の便利な点で、bash4.4からでないとタブの補完機能のソート処理が制御できないという問題について、ソースコードレベルで調べた結果をまとめていたのですが、bashの実装そのものを深く掘り下げ過ぎてしまい、内容が膨大になったので、何回かに分けて書こうと思います。 今回はbashが起動されてからインタラクティブモードでキーボードの入力を待ち受けるまでのお話です。普段使っているbashがどのような処理を行っているのか一緒に覗いてみませんか? 検証ソースコード Bash version 4.1.0(1) release GNU bashの生誕 bashのプロセスが起動されるのはOSへのログイン時にユーザーのログインシェルがbashに設定されている場合、あるいはログイン後に明示的にba

    原理原則で理解するbashの仕組み - Qiita
  • プロセスがファイルに読み書きしてる内容を覗き見する - ablog

    確認方法 ファイルディスクリプタ番号を確認して ls -l /proc/<PID>/fd tail で見てみる tail -f /proc/<PID>/fd/21 実行例 $ while :; do date; sleep 5; done > foo.log & [1] 23801 $ ps -elf|egrep [2]3801 1 S oracle 23801 22232 0 76 0 - 16525 wait 11:03 pts/2 00:00:00 -bash 0 S oracle 23813 23801 0 76 0 - 14732 - 11:03 pts/2 00:00:00 sleep 5 $ ls -l /proc/23801/fd total 0 lrwx------ 1 oracle oinstall 64 Mar 20 11:03 0 -> /dev/pts/2 l-w

    プロセスがファイルに読み書きしてる内容を覗き見する - ablog
  • LinuxカーネルのTCPスタックとシステムコールの組み合わせによる手法よりも高速にポートのListenチェックを行う - 人間とウェブの未来

    まずは前回の記事で盛大な誤認をしていたことを訂正しなければなりません。 hb.matsumoto-r.jp 前回の記事では、高速にリモートホストのポートチェックを3パケットで実現する実装を行うために、RAWソケットとユーザランドの簡易TCPスタックを実装してパケットを放出しましたが、カーネルのTCPスタックによって自動的にRSTパケットが返されるため、RSTパケットが返されるよりもはやくrecvfromしないとSYN+ACKを受け取れないと述べました。 しかし、以下のようにご指摘を頂き、 @matsumotory LinuxのSOCK_RAW+IPPROTO_TCPの場合、カーネルがRSTを送出したとしても同マシン上の既存raw socketに対するrecvfrom()が0を返すことはないと思うのですが、検証されているカーネルのバージョンはいくつでしょうか?— Hiroki Sato (@

    LinuxカーネルのTCPスタックとシステムコールの組み合わせによる手法よりも高速にポートのListenチェックを行う - 人間とウェブの未来
    kwy
    kwy 2017/02/16
  • pmapコマンドについて詳しくまとめました 【Linuxコマンド集】

    pmapはメモリのアドレス空間を表示するコマンドだ。 コンピュータプログラムやデータはRAMなどのメモリ上に展開されるが、ユーザーは意識しなくてもどこにどんなデータが格納されるかはLinuxが自動で設定してくれる。 メモリ上のデータの場所をアドレスと呼び、その領域をアドレス空間と呼ぶ。 pmapコマンドは、データやプログラムがどこのメモリのアドレス空間に格納されているかを知ることができる。 pmapコマンドの基 コマンドの基動作 使い方は、次のとおりだ。 $ pmap プロセス番号(PID) 1675番のメモリのアドレス空間を確認する場合は、次のコマンドだ。 $ pmap 1675 実際にプロセス名からプロセス番号(PID)を知るにはpsコマンドを利用する。 psコマンドでbashのプロセス番号(PID)を調べ、1675番とわかったので、pmapコマンドで1675番のメモリのアドレス空

    pmapコマンドについて詳しくまとめました 【Linuxコマンド集】
    kwy
    kwy 2017/02/05
  • logsaveコマンドについて詳しくまとめました 【Linuxコマンド集】

    logsaveコマンドの基 コマンドの基動作 使い方は、次のとおりだ。 $ logsave コマンド ファイル名 コマンドping -c 1 127.0.0.1の実行結果をファイルlogtext.txtに書き込む場合は、次のコマンドだ。 $ logsave logtext.txt ping -c 1 127.0.0.1 コマンドping -c 1 127.0.0.1の実行結果をファイルlogtext.txtに書き込んだ。 コマンド名に「-」を指定すると、キー入力のすべてを記録する。この場合、Ctrl+Cのショートカットキーでlogsaveコマンドを終了させる。 logsaveコマンドのオプションたち オプションの一覧 後から詳細を紹介するが、まずは一覧で見てみよう。 オプション -a ファイルに追記する オプション -s 不要なヘッダ情報を記録しない オプション -v 画面上にも詳細を

    logsaveコマンドについて詳しくまとめました 【Linuxコマンド集】
    kwy
    kwy 2017/02/05
  • bashの初見殺しっぷりがハンパない件 - Qiita

    「これ知らなきゃ分からないだろ!」 「エラーの原因はわかったけど、なんか腑に落ちない」 いま悩んだ2時間返せ! bashというか、UNIXのコマンドに慣れてない 僕みたいな新人エンジニアが 気をつけた方がいいポイントまとめました。 あいことばをわすれない 微妙にエラーが出ないため、気づかないまま進んでしまい、 のちのち絶妙に致命的なことになってしまうので注意。 一行目忘れて2時間悩みました 二行目のオプションつけなかったため2時間悩みました setのオプションはお好みで あいことばの解説: http://qiita.com/magicant/items/f3554274ee500bddaca8 半角スペースをつけるな!半角スペースをつけろ! shellさんはスペースに非常に神経質です。 よくある変数代入では=の前後にスペースいれてはダメです。

    bashの初見殺しっぷりがハンパない件 - Qiita
  • サーバーのメモリが少しずつ圧迫される原因と対策を調べてみた - Qiita

    サーバーのメモリが slab_cache で占有される サーバーのメモリが数日で slab_cache に占有されるので原因と対策を調査した。 メモリの使用状況の調査 meminfo meminfo を見ると Slab のメモリ使用量が確認できる。 SReclaimable と SUnreclaim を足すと Slab になる。 $ cat /proc/meminfo | grep "Slab\|claim" Slab: 1654520 kB SReclaimable: 1631304 kB SUnreclaim: 23216 kB slabtop slabtop コマンドをたたくと top コマンドのように Slab の内訳が表示される。 dentry が最も多いようだ。 --once は1回出力で終了するオプション。 --sort=c はキャッシュサイズ順にソートするオプション。 sl

    サーバーのメモリが少しずつ圧迫される原因と対策を調べてみた - Qiita
  • [Linux] メモリ不足の時に、インフラとして対応できる1つのこと - Qiita

    この記事はフロムスクラッチ Advent Calendar 2016の6日目の記事です。 想定読者 1. サーバーとかを立てたことないアプリ開発者 2. インフラとは何か?と悶々としている人 3. インフラリソースを気にしない開発者に違和感を感じている人 4. 業務でLinuxコマンド叩いているけど、必要最低限しか使っていない人 自己紹介 ITベンチャー2年目。25歳。 インフラエンジニア。 東工大大学院 化学専攻修了。 新薬合成研究から、プログラミングまで。 NHK(日放送協会)大好き♥ 東京生まれ。東京育ち。 最近のマイブームは、ランニング。 とある日・・・ A: 「なんか開発環境のバッチが落ちてるんだけど」 B: 「???なんで?」 A: 「とりま、ログみよ。」 A: 「ん・・・あー・・・」 "Cannot allocate memory" or "OutOfMemoryError

    [Linux] メモリ不足の時に、インフラとして対応できる1つのこと - Qiita
  • TechCrunch

    Bob Iger said Wednesday that Disney “would like to stay” in India and is considering its options in the world’s most populous country where its TV business continues to pull profit b

    TechCrunch
  • Linuxネットワークドライバの開発 - Handwriting

    この記事はLinux Advent Calendar 2016 9日目の記事です。 遅刻してしまい申し訳ございません。。。 とある事情があって1ヶ月半ほど独自NICのLinux向けのネットワークドライバを開発していた。 今回はARM用のデバイスドライバを開発した。NICはXilinx社のFPGAであるZYBOを用いて開発した。 まだ十分に実用段階というわけではないが、ひとまず独自NIC経由でのpingやiperfが通ったので、後学のために知見を残しておきたい(誰得だ、という感じだが)。 ソースコードはまだ公開されていないが、そう遠くないうちに公開する予定(たぶん)。 はじめに Linuxのデバイスには キャラクタデバイス - バイト単位のデータ通信 (e.g. シリアルポート) ブロックデバイス - ブロック単位のデータ通信 (e.g. ディスク) ネットワークデバイス の3種類がある。ネ

    Linuxネットワークドライバの開発 - Handwriting
    kwy
    kwy 2017/01/09
  • Linux スケジューラーのコア実装とシステムコール - Qiita

    はじめに これは Linux Advent Calendar 2016 の第 11 日目の記事です。Linux のタスクスケジューラーのソースコードや関連するドキュメントなどを読んで分かったことをまとめました。とても長いです・・・ はじめにスケジューラーのアーキテクチャと重要な概念を紹介し、その後はスケジューラーコアとシステムコールの実装について分かったことを延々と述べます。調べきれなかったことや分からなかったことは TODO に残したので、コメント欄とかツイッターで教えてもらえると嬉しいです。間違いの指摘も大歓迎です。 ちなみに私が読み始めたきっかけは、スケジューラーのアーキテクチャ、スケジューリングアルゴリズム、スケジューリングアルゴリズムの切り替え方、nice 値やプロセッサアフィニティがスケジューリングに及ぼす影響、プリエンプションの流れ、マルチプロセッサにおけるタスクのロードバラ

    Linux スケジューラーのコア実装とシステムコール - Qiita
    kwy
    kwy 2017/01/09
  • [Linux]ネットワーク経由でHDDデータをダンプ

    マシンを移行したり、物理マシンを仮想マシン(P2V)する時なんかに、HDDのダンプをよく取ると思います。 しかし、HDDのフルダンプを取るときは当然ながら、空き容量がたくさん空いた別のドライブ(パーティション)が必要です。また、HDDが1台しかなく、かつ、パーティションも切ってない場合はどうにもなりません。こういう時は、ネットワークごしに別のマシンにダンプするといい感じです。 よく忘れるのでコマンドをメモっておきます。参考にしたページは以下。 Using DD Over Netcat vs SSH 受信側(netcat待ち受けするマシン、ダンプデータを保存するマシン): [bash] nc -l 12345 | bzip2 -d |dd bs=16M of=[保存先ファイル名] [/bash] 送信側(ダンプするマシン): [bash] dd bs=16M if=/dev/sdXX | b

    [Linux]ネットワーク経由でHDDデータをダンプ
  • Mondo rescueを用いたシステムリカバリの方法

    リカバリディスクの作成 Mondo Rescureリポジトリのインストール 公式サイトから、リポジトリ情報をインストールします。 $ wget -q ftp://ftp.mondorescue.org//rhel/5/i386/mondorescue.pubkey $ sudo rpm --import mondorescue.pubkey $ sudo curl -sLo /etc/yum.repos.d/mondorescue.repo ftp://ftp.mondorescue.org/rhel/5/i386/mondorescue.repo $ sudo sed -i -e "s|^enabled=1|enabled=0|" /etc/yum.repos.d/mondorescue.repo $ rm -f mondorescue.pubkey 関連パッケージのインストール Mon

    Mondo rescueを用いたシステムリカバリの方法
  • 【dump】ext2/ext3/ext4ファイルシステムをバックアップする

    dump(8) ext2/ext3/ext4ファイルシステムをバックアップする 構文 dump [-DUMPLEVEL] [オプション] FILES-TO-DUMP オプション

    【dump】ext2/ext3/ext4ファイルシステムをバックアップする