タグ

linuxに関するuokadaのブックマーク (162)

  • Using eBPF in Kubernetes

    This article is more than one year old. Older articles may contain outdated content. Check that the information in the page has not become incorrect since its publication. IntroductionKubernetes provides a high-level API and a set of components that hides almost all of the intricate and—to some of us—interesting details of what happens at the systems level. Application developers are not required

    Using eBPF in Kubernetes
  • OOM Killerにであったら何をするべきか?

    OOM killerで大事なプロセスが殺される。困りますね。。 google で OOM Killerと入力すると 「無効」とか補完されます。しかしどうするのが良いのか、あまりよく説明されている記事がみあたらなかったので自分の考えをメモしておきます。 OOM Killer の目的は何か? まずは何故OOM Killerが発生しているのかについて、ざっくりイメージをつかみましょう。linux kernelはプロセスからの「メモリくれ」という要求に対してたぶん足りそうだという場合に「OK」といって渡します。実際のメモリ割り当てはアクセスが発生するタイミングまで遅延させます。これを遅延アロケーションといい、だいたいにおいてうまく動きます。ただし必ずうまくいくと保証されているわけではないので破綻することがあります。 OOM Killerはこの遅延アロケーションが破綻しそうなときに、適当にプロセスを

  • Linux パッケージ管理コマンド比較(yum / dnf / apt 等) - らくがきちょう

    Linux でパッケージを管理するには、ディストリビューション毎に以下のコマンドがあります。 系統 ディストリビューション 主なコマンド RedHat 系 RedHat Enterprise Linux, CentOS, Fedora 等 yum, rpm Debian 系 Debian, Ubuntu 等 apt-get, apt-cache, dpkg RedHat 系の yum は Python2.x ベースで書かれているそうです。しかし、今後の Python3 対応を考えると書き直すよりも新たなパッケージマネージャを作った方が良い… という考えで、今後は dnf への移行が決まっているそうです。実際、Fedora 22 からは dnf が採用されています。yum と dnf の違いは man で確認することも出来ます。 man yum2dnfまた、Debian 系も apt-get

    Linux パッケージ管理コマンド比較(yum / dnf / apt 等) - らくがきちょう
  • LinuxのBPF : (1) パケットフィルタ - 睡分不足

    はじめに BPFの基礎 BPFの構造 BPFでのフィルタリング レジスタマシン LinuxでのBPF BPFを利用したパケットフィルタリング libpcapとBPF ここまでのまとめ 参考文献 その他参考URL はじめに BPFはBerkeley Packet Filterの略で,1993年に効率的なパケットフィルタリング手法として提案されました[1] *1. BPFの構成要素は大きく2つあって,一つがネットワークからパケットをキャプチャする部分,そしてもう一つがキャプチャした パケットをフィルタリングする部分です.BPFといった場合,後者のフィルタリング機構だけを指すことも多いです. FreeBSDなどのBSD系のOSでは/dev/bpf*という特別なデバイスがあって,このBPFを利用することができます.また, Linuxでもパケットフィルタリング(Linux Sokcet Filter

    LinuxのBPF : (1) パケットフィルタ - 睡分不足
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • lsof: can't identify protocol — Idea of the day

    uokada
    uokada 2018/12/08
  • 10.6. systemd のユニットファイルの作成および変更 | Red Hat Product Documentation

    ユニットファイルには、ユニットを説明し、その動作を定義する設定ディレクティブが含まれます。複数の systemctl コマンドがバックグラウンドでユニットファイルと連携します。詳細な調整を行うには、システム管理者がユニットファイルを手動で編集または作成する必要があります。表10.2「systemd のユニットファイルの場所」 には、システムにユニットファイルが保存される 3 つのメインディレクトリーが記載されています。/etc/systemd/system/ ディレクトリーは、システム管理者が作成またはカスタマイズするユニットファイル用に予約されます。 ユニットファイル名は、以下のフォーマットを使用します。 unit_name.type_extension unit_name はユニットの名前を表し、type_extension はユニットタイプを識別します。ユニットタイプの完全なリストは

    10.6. systemd のユニットファイルの作成および変更 | Red Hat Product Documentation
  • 明日使えない Linux の capabilities の話 - @nojima's blog

    (この記事は KMC アドベントカレンダー 2016 の3日目の記事です) はじめに みなさん以下のようなことで困ったことはないでしょうか? ポート80を listen したいけど特権ポートなので、一般ユーザの権限で動くデーモンでは bind できない。 1024未満のポートは特権ポートと呼ばれ、一般ユーザの権限では bind することはできません。 この問題の解決策を考えてみます。 (なお、長々と説明を書いていますが、結論だけ知りたい人は一番下だけ読んで下さい) root で起動 まず、root であれば特権ポートを自由に bind できるので、root で対象デーモンを起動すれば、特権ポートを bind できます。 しかし、デーモンを root として動作させるのは一般にリスクが大きいです。 もしそのデーモンに脆弱性があった場合、root 権限を悪用される可能性があるわけです。 したが

    明日使えない Linux の capabilities の話 - @nojima's blog
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • 意外と知らない?NICを冗長化するボンディング(bonding) - うさぎ文学日記

    割と長い間ネットワークに携わってる人と話していて、その人がボンディングの存在を知らなかったので、もしかして知られていないのではないかと思ったので紹介してみます。 Linuxでは、ボンディング(bonding)を使うことでNICの冗長化、負荷分散ができます。ケーブルが断線したり、間違えて抜いてしまったなんてことがあったとしても大丈夫です。 このボンディングはNICを複数束ねて使うことで、1個のチャンネルにすることができます。異なるベンダーのNICとかでも大丈夫ですよ。(bondingは機能の名称で、束ねることはteamingとも言うらしい) 異なるスイッチ(更に、その上に異なるルーターとか)なんかにつなぐと、更に冗長化ですよ。 当たり前ですが、NICは2個以上消費します。 /etc/sysconfig/network-scripts/ifcfg-bond0 を作成 DEVICE=bond0

    意外と知らない?NICを冗長化するボンディング(bonding) - うさぎ文学日記
  • CPU / メモリ / ディスクに負荷をかける stress コマンド - kakakakakku blog

    最近 stress コマンドを使って,サーバに負荷をかける方法を紹介する機会があり,よく使っているのに今までブログに書いていなかったなと気付き,今回まとめることにした.CPU に負荷をかけるだけなら yes > /dev/null をコア数に合わせて並列実行すれば良いけど,stress コマンドならメモリとディスクにも負荷をかけることができるので,シナリオのバリエーションを増やすことができる. stress project page インストール 検証環境として CentOS を使った. $ sudo yum install stress $ stress --version stress 1.0.4 共通オプション 以下のような共通オプションが用意されている.よく使うのは --timeout で,秒数を指定して負荷をかけることができる.他はあまり使ったことがないかも. -t, --tim

    CPU / メモリ / ディスクに負荷をかける stress コマンド - kakakakakku blog
  • Linuxでネットワークインタフェースの活動状況を調べる by Rust - Qiita

    以前、Linuxでネットワークインタフェースの活動状況を調べる by Golang という記事を書いたのですが、最近Rustを勉強し始めたので、同様のものをRustで書いてみました。 やっていること /sys/class/net/<network_if>/statistics/ から受信、送信の累計のバイト数がわかるので、周期的にそれを表示しています。 ソースをここに貼ります。 use std::env; use std::fs; extern crate chrono; extern crate schedule_recv; use schedule_recv::periodic_ms; fn read_transfer_bytes(f: &str) -> u64 { match fs::read_to_string(f) { Ok(s) => s.trim().parse().unwr

    Linuxでネットワークインタフェースの活動状況を調べる by Rust - Qiita
  • yuzu · yuzu

    yuzu is an experimental open-source emulator for the Nintendo Switch from the creators of Citra. It is written in C++ with portability in mind, with builds actively maintained for Windows, Linux and Android.

    uokada
    uokada 2018/08/26
  • アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について - s_tajima:TechBlog

    問題 アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について調べた。 該当のサーバでは、以下のようにメモリの使用率が徐々に上昇していく。 また、アプリケーションのプロセス自体がメモリを消費しているわけではない状態。 原因 調査すると、このバグ仕様を踏んでいるのではないかと思われるページを見つけた。 https://bugzilla.redhat.com/show_bug.cgi?id=1044666 内容としては、curlを実行した際に /etc/pki/nssdb/以下の存在しないファイル(毎回違うパス)に対してaccessシステムコールが大量にコールされ、 negative dentry cacheが溜まっていき、メモリ使用量が圧迫されるというもの。 実際、この状況が起きているサーバを調べるとメモリ使用率のうち多くを占めているのはnega

    アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について - s_tajima:TechBlog
    uokada
    uokada 2018/08/09
    自分にはそんな関係ない問題だけどいつか役に立ちそう。 "NSS_SDB_USE_CACHE=yes"
  • Linuxでメモリ使用量が増え続けた - 年中アイス

    AmazonLinux 2017.03にnginx乗せて稼働させてたら、なぜかメモリ使用量が、1日ちょっとで2GB後半にさしかかりました。cacheではなくusedを徐々に消費してたので、これは何かリークしてる疑い。 プロセス等を見てもメモリを使っているものもいないし、疑いのあるプロセスをrestartしても改善しませんでした。 何だろうなーと調べてみたらすぐ出てきました。特にAmazonLinuxは関係なし。 dev.classmethod.jp 上記ページと同じく、NSSの問題で、curlがdentryというディレクトリ階層構造の管理をしているキャッシュを多く消費してしまうと。curlでhttpsの監視が動いており、それが5分に1回なので、徐々にリークした様子。1時間に100MB程度ずつ増加していたようです。 回避策は、NSS_SDB_USE_CACHE=YESという環境変数を指定する

    Linuxでメモリ使用量が増え続けた - 年中アイス
    uokada
    uokada 2018/08/09
    "NSS_SDB_USE_CACHE=yes"
  • Linuxの不揮発メモリ対応について - Qiita

    (2019/6/12追記) 今なおこの記事を参照してくれる方がいらっしゃるのですが、現在は以下のスライドのほうが情報が新しいです。 記事は残しておきますが、新しい情報はこちらをご参照ください。 https://www.slideshare.net/ygotokernel/nvdimmlinux-137104084 はじめに Linux Advent Calendarの24日目の記事として不揮発メモリの状況について記載したいと思います。今回はkernelのソースの中とかのあまり技術的に深いところは突っ込まず、概略レベルです。(深いところはまだまだ勉強中の身です)。間違いなどがあればご指摘いただけると幸いです。 不揮発メモリとは これまでPCやサーバなどで主記憶装置といえば、電源を停止させたり再起動させるとデータがクリアされる揮発性のRAMが使われて来ました。この主記憶としてのメモリが不揮発

    Linuxの不揮発メモリ対応について - Qiita
  • 「Systemd」を理解する ーシステム起動編ー | ギークを目指して

    2014年6月10日、とうとうRHEL7が正式リリースを迎えた。RHEL7での変更点については、このスライドに詳しく記載されているが、今回の記事では特に大きな変更点である「Systemd」について解説していきたいと思う。 Systemdは従来のinit/Upstartの代替であり、非常に高速なシステム起動・終了や、様々なシステム管理機能を提供する。ただし、その仕組みや管理方法は従来のinit/Upstartとは大きく異なり、init/Upstartに慣れ親しんだ方は習熟に時間を要するだろう。 Systemdは様々な機能と役割を持っているが、今回の記事ではSystemdによるシステム起動に焦点を当てた内容とさせていただく。Systemdを利用したシステム管理については、後日別の記事を投稿する予定だ。なお、当記事はRHEL7のベースとなっているFedora19を元に動作確認させていただいた。

    「Systemd」を理解する ーシステム起動編ー | ギークを目指して
  • logrotate入門 - Qiita

    この記事は株式会社ネクスト(Lifull) Advent Calendar 2016の3日目の記事です。 遅くなってしまいましたが、なんとか当日に間に合わせましたいました。 記事はLinuxlogrotateコマンドについての説明をするものであり、その他のログに関する話は一切出てきません。ご了承ください。 logrotateとは man logrotateにも書いてあることですがlogrotateは複数のログファイルを圧縮、削除、メールで送信するための機能です。 これにより「ファイルサイズがN以上になったら」とか「日次・週次・月次などで分割」などが容易に可能になります。 logrotate自体はデーモンではなくcrondによって実現されています。 利用する前にcrondが動いていることを確認しましょう。

    logrotate入門 - Qiita
  • logrotateの設定とファイルのアクセスモードについて

    忙しい人のために先にまとめログファイルのopen時のアクセスモードは os.O_WRONLY|os.O_APPEND|os.O_CREATE を指定するlogrotateの設定には nocreate を渡すlogrotateではファイルをmvした後に行う処理が書けるので、そこでアプリケーションに対してシグナルを送ることでlogrotateの処理を実装できるfluentdはログのローテートを頑張って検知している ファイルディスクリプタについてファイルを open するとファイルディスクリプタを得られます。ファイルに書き込む際にはファイルディスクリプタ経由で書き込みを行います。 Linuxシステムプログラミング 23pをちょっと長めに引用します。 ファイルを読み書きする前にはオープンする必要があります。カーネルはオープンしたファイルをプロセスごとに管理しており、これをプロセスのファ

  • The OOM CTF

    カーネルのバージョンやシステムの構成や実行するタイミングなどの変動要因により、結果が異なる場合がありますことを予めご了承ください。 0.3 自己紹介:熊Linux との関わりについて OSレベルでのセキュリティ強化 2003年4月から2012年3月までは、 TOMOYO Linux という Linux システム向けのアクセス制御モジュールの開発に携わってきました。バッファオーバーフロー脆弱性やOSコマンドインジェクション脆弱性を撲滅できない状況で、当初は SELinux という難解なアクセス制御モジュールしかありませんでした。 TOMOYO Linux のメインライン化にまつわる苦労話は、セキュリティ&プログラミングキャンプ2011の講義資料を参照していただければと思います。 TOMOYO Linux から始まって AKARI や CaitSith に至るまでの変遷は、セキュリティ

    The OOM CTF