タグ

linuxに関するa_bickyのブックマーク (43)

  • systemd serviceから呼ぶシェルではsudoではなくsetprivを使う - 赤帽エンジニアブログ

    Red Hatの森若です。 自分でsystemdのservice unitを作るときに、起動用のいくつかのコマンドを記述したシェルスクリプトを呼ぶ事は(理想的ではないですが)あるかと思います。 今回はこの場合に、sudoを利用するとまずい理由を説明して、かわりにsetprivを使うほうがよいという話です。 例題用のservice 実行してみる 別のcgroupだと何がまずいのか? 対策はsetprivコマンド 例題用のservice sudoによるまずい動作を確認するためのできるだけ単純な例として、hoge.service を用意します。 /opt/hoge/hoge.sh #!/bin/bash sudo -u moriwaka sleep 5000 /etc/systemd/system/hoge.service [Unit] Description=hoge [Service] Ty

    systemd serviceから呼ぶシェルではsudoではなくsetprivを使う - 赤帽エンジニアブログ
  • inodeから見たmvやcpの動き - Carpe Diem

    背景 実行中のファイルに対してcpで上書きする場合だとText file busyで置き換えられず、mvだと何も聞かれず置き換えられる理由を深掘ってみました。 データ構造 mvやcpの動きを確認する前に必要な前提知識を説明します。 プロセスとinodeとの関係 プロセスとinodeは以下のように プロセステーブルエントリ └ファイルテーブルエントリ └v-node(i-node) という形で繋がっています。 ref: Lec 21: File System, Kernel Data Structures, and Open Files inodeのデータ構造 inodeは以下のような情報を持ちます。 inode番号 ファイル種類(レギュラファイル、ディレクトリファイル、ソケット、etc...) OwnerID GroupID アクセス許可ビット ファイルサイズ データブロックへのポインタ

    inodeから見たmvやcpの動き - Carpe Diem
  • perfを用いたシステムのボトルネック解析方法

    背景システムの処理速度を改善するために、ボトルネック解析を行う必要があった。 ボトルネック解析の方法と、プロファイリングに使用したperfの使用方法に関して調査を行った。 記事の目的perfを使用し、ボトルネック解析を行う ここでは、perfの導入方法及び使用方法について記載する。 perfとはperf(Performance analysis tools for Linux)とはLinuxカーネル2.6.31以降で使用可能なLinuxの性能解析ツールである。 実行されているプロセス毎のCPU使用率やプロセス内で呼ばれている関数の割合などを調査できる。 利点gprofのように、プログラム作成時に専用のライブラリを入れたり、コンパイル時にオプションをつける必要がない フレームグラフにして、ビジュアライズできる 導入方法(Ubuntu編)Ubuntu16.04へperfを導入する手順について記

    perfを用いたシステムのボトルネック解析方法
  • ls -l はなぜ事故を起こすのか

    はじめに この記事は以下の記事で事故がなぜ起きたかを技術的に理解し筆者のtipsを共有しようと思い書きました。あくまで筆者のtipsですので、これが正しいとは限りません。 やはり、下記のコマンドが原因でした。 [root@foo script]# ls -l | sh 事故そのものは ls コマンドに -l を付けて実行してしまった事で、ls コマンドが出力したシンボリックリンクが以下の様になってしまったという話です。

    ls -l はなぜ事故を起こすのか
  • Linuxの基礎用語を完全理解するためにエンジニアが作成した「10のミニプロジェクト」とは?

    by Adam Harvey Linuxを利用していると「シェル」や「grep」「プロセス」といった言葉を目にします。エンジニアのCarl Riis氏はそんなLinuxの基礎用語の意味や仕組みをさまざまなウェブサイトから学習し、「10のミニプロジェクト」を作成することでスキルを向上させたとして、その詳細を公開しています。 Getting better at Linux with 10 mini-projects - carltheperson https://carltheperson.com/posts/10-things-linux GitHub - carltheperson/10-things-linux: Getting better at Linux with 10 mini-projects. https://github.com/carltheperson/10-thing

    Linuxの基礎用語を完全理解するためにエンジニアが作成した「10のミニプロジェクト」とは?
  • ソケットプログラミングのTips

    概要 ソケットプログラミングに関するTipsをメモレベルで記載する。 切断検知と経路切断 TCPコネクションの切断検出 対向がclose()、shuttdown()、プログラム終了等をしたときの切断検出について。 OSをシャットダウンさせた場合も通常はアプリケーションの終了処理が走り、正常な切断が動く。 受信側の切断検出は、recv()がlength==0で返ってきたとき、または、errno==ECONNRESETとなる。(ECONNRESETはRSTによって切断された場合) 送信側の切断検出は、切断された後2回目のsend()がエラーとなる。 ※相手がclose()→こちらがsend()→相手にパケットが飛ぶが待ち受けプログラムがいないためRST応答が来る→もう1度send()→エラー ※send()自体はカーネルの送信バッファにデータコピーするだけなので、TCPレベルの応答(送信完了)

    ソケットプログラミングのTips
  • Systemd入門(1) - Unitの概念を理解する - めもめも

    Linuxの起動処理は、これまでinit/upstartと呼ばれる仕組みで行われていました。Red Hat Enterprise Linux 7 (RHEL7)では、これが、systemdと呼ばれるまったく新しい仕組みに置き換わります。Fedoraでは、すでに先行してsystemdが採用されていますが、この連載(?)では、Fedora 17での実装をベースとして、systemdの考え方や仕組み、利用方法を説明していきます。今回は、systemdの動作の基礎となる「Unit」の概念を理解します。 systemdを採用したFedoraでLinuxの基礎を学びなそう!という方には、「「独習Linux専科」サーバ構築/運用/管理――あなたに伝えたい技と知恵と鉄則」がお勧めです。(^^/ systemdの考え方 参考資料 ・Rethinking PID 1:systemdの開発者であるLennart

    Systemd入門(1) - Unitの概念を理解する - めもめも
  • CPU使用率は間違っている | Yakst

    Netflixのパフォーマンスエンジニアである筆者からの、topコマンドなどで表示されるCPU使用率(%CPU)は、いまや当の使用率を表しておらず、チューニングなどのための指標として使えないという指摘。なぜそうなってしまったのか、何を見れば当のCPU使用率がわかるのかをわかりやすく解説した記事。 私たちみんながCPU使用率として使っている指標は非常に誤解を招くもので、この状況は毎年悪化しています。CPU使用率とは何でしょうか?プロセッサーがどのくらい忙しいか?違います。CPU使用率が表しているのはそれではありません。私が話しているのは、あちこちで、あらゆる人たちに、あらゆる監視製品で、あるいはtop(1)でも使われている、"%CPU"という指標のことです。 あなたの考えているであろうCPU使用率90% : 実際 : "stalled"(訳注 : 以下ストールと言う)とは、プロセッサーが

    CPU使用率は間違っている | Yakst
  • naoyaのはてなダイアリー - 負荷とは何か

    調べごとをしたので blog に書いて理解を深めようのコーナーです。長文です。 Linux でシステム負荷を見る場合にお世話になるのが top や sar (sysstat パッケージに同梱されてるコマンド) などのツールです。 top ではシステム統計のスナップショットを見ることができます。今システムがどういう状態かなーというときは top が便利。 top - 08:16:54 up 3 days, 14:43, 6 users, load average: 0.18, 0.07, 0.03 Tasks: 43 total, 2 running, 41 sleeping, 0 stopped, 0 zombie Cpu(s): 18.2% us, 0.0% sy, 0.0% ni, 81.8% id, 0.0% wa, 0.0% hi, 0.0% si一方の sar では10分ごとのシ

    naoyaのはてなダイアリー - 負荷とは何か
  • 『Linuxカーネル解読室』輪講 #1「プロセススケジューリング」 - Kentaro Kuribayashi's blog

    Linuxカーネルの話を知りたいなーってんで、『Linuxカーネル解読室』の輪講を始めました。とりあえず、カーネルのソースをがりがり読み込むというよりは、ざっくりと動作を把握しようという感じで。今日の初回は、第1章「プロセススケジューリング」を読みました。この分野にまったくもって不案内なので、難しい……。少しづつでも理解を進めたいです。 以下に資料を貼り付けておきます。実際には、id:naoyaをはじめとした参加者によるフォローに助けられて進めた感じなので、資料だけだといろいろとアレな面もあるとは思います。 Linuxカーネル2.6解読室 作者: 高橋浩和,小田逸郎,山幡為佐久出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/18メディア: 単行購入: 13人 クリック: 189回この商品を含むブログ (116件) を見る [24時間365日] サーバ/インフラを支

    『Linuxカーネル解読室』輪講 #1「プロセススケジューリング」 - Kentaro Kuribayashi's blog
  • Linux の iostat の出力結果を銀行のATMに例えて説明してみる - ablog

    vmstat の"r"列とマクドナルドのレジカウンター - ablog の iostat 版です。 以前、iostat の見方 - ablog というエントリを書きましたが、 絵で見てわかるOS/ストレージ/ネットワーク~データベースはこう使っている (DB Magazine Selection) 作者: 小田圭二出版社/メーカー: 翔泳社発売日: 2008/04/22メディア: 単行(ソフトカバー)購入: 22人 クリック: 303回この商品を含むブログ (36件) を見るP.176 LIST 1 Linuxのiostat -x 30の出力結果を分析 を元に説明してみます。 $ iostat -x 30 avg-cpu: %user %nice %sys %iowait %idle 15.46 0.23 3.70 45.05 35.55 Device: rrqm/s wrqm/s r/

    Linux の iostat の出力結果を銀行のATMに例えて説明してみる - ablog
    a_bicky
    a_bicky 2019/01/07
    わかりやすい
  • LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita

    大人気TBSドラマ、「逃げるは恥だが役に立つ」でも話題になったインフラエンジニアという言葉ですが、今ではインターネットインフラを知らないまま開発をするのも難しい状況になっています。クラウドが一般化されたからといって単にリソースの調達が簡単になっただけで、つまりハードウェアの知識が無くても何とかやっていけるようになっただけであり、インフラの知識が要らなくなったなどということは全くなく、むしろdevopsの掛け声とともに、ソフトウェア開発者にインフラを見なければならない新たな責務が課せられたという、なかなか痺れる状況なのだろうと思います。 そういった中で、先日のさくらインターネットのAdvent Calendar最終日に「いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方」という記事を書かせて頂きましたが、今回はLinuxサーバの「負荷」と、ロードアベレージに関して、掘り下げ

    LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる - Qiita
    a_bicky
    a_bicky 2019/01/06
    “I/Oウェイトとは、I/OがボトルネックになってCPUが有効に使えていない状況を示す” ‪ので、他のプロセスが使っていれば 0 になると‬
  • [試して理解] Linuxのプロセススケジューラのしくみ - Speaker Deck

    成長は小さな失敗の積み重ね 事業を支えるCARTAのフルサイクルエンジニアリング / growth-for-small-fail-fast-carta-fullcycle

    [試して理解] Linuxのプロセススケジューラのしくみ - Speaker Deck
  • [OS] メモリリークの調査方法 - th0x4c 備忘録

    目的 メモリリークの調査方法をまとめる。 環境 OS: CentOS 5.5 Kernel: 2.6.18-194.el5 x86_64 GCC: gcc 4.1.2 20080704 GDB: GNU gdb 7.0.1-23.el5 Valgrind: valgrind-3.5.0 サンプルプログラム メモリリークが起きるサンプルとして以下を利用する。 leak_func() が実行される度に 2048 bytes メモリリークする。 合計で 101 回 leak_func() が実行されるので 206848bytes(= 2048 * 101 bytes) リークする。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

    a_bicky
    a_bicky 2019/01/03
    pmap と gdb を使った調査方法
  • プロセスあたりのメモリ使用量を知りたい - 備忘録 blog

    tl;dr それぞれのプロセスがどのぐらいのメモリを使用しているかを知りたい。 コマンドで確認する システム全体のメモリ使用量を確認する cat /proc/meminfo linuxではデバイスもプロセスもファイルとして扱えるので、catできる。 MemTotal: 8073996 kB MemFree: 333772 kB MemAvailable: 4262036 kB Buffers: 600280 kB Cached: 3386552 kB SwapCached: 0 kB Active: 4668596 kB Inactive: 2382920 kB Active(anon): 3061940 kB Inactive(anon): 286724 kB Active(file): 1606656 kB Inactive(file): 2096196 kB Unevictable:

    プロセスあたりのメモリ使用量を知りたい - 備忘録 blog
  • I/O負荷の正確な状況はiowaitでは分かりません - Qiita

    さくらインターネットのアドベントカレンダー9日目として、サーバ屋らしく、運用に関するコマンドの使い方を紹介します。 サーバの負荷が高まってきたときに、vmstatやtopなどのコマンドで調査する事が出来ますが、I/O負荷をwa(iowait)によって判断する人も多いと思います。 ただ、結論から言うと、iowaitは正確にI/Oの負荷を表しているわけではありません。 これらを、実際に演習をしながら見ていきたいと思います。 iowaitとidle iowaitとはあくまでも、CPUが空いているのにI/Oがボトルネックになっているプロセスを示しているだけで、CPUの利用率が高いときにはI/Oがボトルネックになっていてもiowaitが上がりません。 同様に勘違いされがちなのが、id(idle)はCPUの空きを示しているというものですが、idleは必ずしもCPUの空き時間を示しているものではありませ

    I/O負荷の正確な状況はiowaitでは分かりません - Qiita
  • How setting the TZ environment variable avoids thousands of system calls | Packagecloud Blog

    How setting the TZ environment variable avoids thousands of system calls TL;DR This blog post explains how setting an environment variable can save thousands (or in some cases, tens of thousands) of unnecessary system calls that can be generated by glibc over small periods of time. This has been tested on Ubuntu Precise (12.04) and Ubuntu Xenial (16.04). It likely applies to other flavors of Linux

    a_bicky
    a_bicky 2018/07/23
    TZ 環境変数がセットされていれば glib の localtime で stat system call が毎回呼ばれることはなくなって高速とな
  • Linux Load Averages: Solving the Mystery

    Recent posts: 28 Apr 2023 » eBPF Observability Tools Are Not Security Tools 01 Mar 2023 » USENIX SREcon APAC 2022: Computing Performance: What's on the Horizon 17 Feb 2023 » USENIX SREcon APAC 2023: CFP 02 May 2022 » Brendan@Intel.com 15 Apr 2022 » Netflix End of Series 1 09 Apr 2022 » TensorFlow Library Performance 19 Mar 2022 » Why Don't You Use ... 26 Sep 2021 » The Speed of Time 06 Sep 2021 »

    Linux Load Averages: Solving the Mystery
    a_bicky
    a_bicky 2018/05/21
    load average は "measuring the number of threads that are working and waiting to work"
  • Linux のオーバーコミットについて調べてみた

    Linux のオーバーコミットについて調べてみた Linux のオーバーコミットのはなし(これを書いたのは Linux 2.6.38 のとき) Linux カーネルは実メモリ以上にメモリをプロセスに割り当てることができる この仕組みをオーバーコミット (over-commit) と呼ぶ オーバーコミットでは,とりあえずメモリを malloc させて仮のアドレスを返しておき, 実際に使われる段になってはじめて実メモリを確保する. 実験ただ malloc し続けるだけのプログラムを作って実験してみる. このプログラムをメモリ 1 GB + スワップ 1 GB のホストで実行してみると, $ free -t total used free shared buffers cached Mem: 1022404 82992 939412 0 4172 12280 -/+ buffers/cache:

    Linux のオーバーコミットについて調べてみた
  • 6万ミリ秒でできるLinuxパフォーマンス分析 | Yakst

    NetflixのシニアパフォーマンスアーキテクトであるBrendan Gregg氏による、Linuxサーバにログインして60秒でまず調べることのまとめ。 パフォーマンス問題でLinuxサーバーにログインしたとして、最初の1分で何を調べますか? Netflixには、多数のEC2 Linuxからなるクラウドがあり、そのパフォーマンスを監視したり調査したりするための数々のパフォーマンス分析ツールがあります。その中には、クラウド全体にわたる監視を行うAtlasや、オンデマンドにインスタンスの分析を行うVectorがあります。これらのツールは多くの問題を解決する手助けをしてくれますが、各インスタンスにログインし、標準的なLinuxパフォーマンスツールを実行する必要がある場合もあります。 この記事では、すぐ使えるはずの標準的Linuxツールを使いコマンドラインにおいて、最適化されたパフォーマンス調査を

    6万ミリ秒でできるLinuxパフォーマンス分析 | Yakst