タグ

Linuxに関するnharukiのブックマーク (180)

  • systemd-coredump環境で暮らす - 赤帽エンジニアブログ

    Red Hat の森若です。 記事は赤帽エンジニアAdvent Calendar 2018の7日目です。 RHEL 7 まで、開発中以外のタイミングでクラッシュするプロセスのcoreを取得するのはなかなか大変でした。デフォルトではプロセスのCWDにcoreファイルを保存しますが、このサイズや個数を制御する標準的な方法がなかったため、「ときどきクラッシュするシステム」の問題を解析するためにcore出力を有効にすると、ファイルシステムがあふれてしまう懸念があったのです。 RHEL8 betaではsystemd-coredumpがデフォルトで有効になっています。 systemd-coredumpはプロセス異常終了時に出力されるcoreファイルを管理する仕組みで、以下のような機能を提供します。 coreファイルを(各プロセスのCWDではなく)あらかじめ決められた場所に保存する systemd-j

    systemd-coredump環境で暮らす - 赤帽エンジニアブログ
  • Linuxカーネルパラメータのチューニング&設計 - Qiita

    Linuxカーネルパラメータのチューニング&設計 0.目的 【カーネルパラメータのチューニング】を修得する目的は、サーバの特性を理解し、それぞれに合ったカーネルパラメータのチューニングすることでリソースの有効活用をできるようになることを目的とし、私個人の経験を元にした見解を以下の記事に掲載します。 1.最初に サーバには、それぞれ必要なリソース特性があり、それに合わせたカーネルパラメータのチューニングが必要となります。 世の中の流れはオンプレよりクラウドに移行してはいるので、カーネルパラメータのチューニングよりスケールアップなりスケールアウトするなりの対応をすべきなのでしょう。 ですが、カーネルパラメータのチューニングを知らないとどちらを選択すべきかも理解しずらいと思いますので軽率には出来きません。(待ち行列理論もしらないといけませんが) また、最近のLinuxはデフォルト値が大きくなって

    Linuxカーネルパラメータのチューニング&設計 - Qiita
  • [OS] 仮想メモリ空間のメモリマップを調べる - th0x4c 備忘録

    目的 仮想メモリ空間のアドレス等のメモリマップを調べる。 なお、ちゃんと調べたわけではないので誤りがあるかもしれない。 環境 OS: Oracle Enterprise Linux 5.8 Kernel: 2.6.32-300.10.1.el5uek x86_64 Unix/Linux における仮想メモリ空間のメモリマップは一般には以下のようになっている。 +------------------------------+ 0x0000000000000000 : : +------------------------------+ | | | text | 機械命令 | | +------------------------------+ | | | data | 初期化された static 変数 | | +------------------------------+ | | | BSS

  • Linuxカーネル解読室 再び - VA Linux エンジニアブログ

    Linuxカーネルコード解析プロジェクト立ち上げ Linuxカーネル成長の歴史 カーネルの大きさ バージョン番号 SCM導入 カーネル機能の変遷 執筆者 : 高橋 浩和 ※ 「新Linuxカーネル解読室」連載記事一覧はこちら Linuxカーネルコード解析プロジェクト立ち上げ 弊社内にて若手技術者が中心となり、最新のLinuxカーネルコード全体を読み解くプロジェクトが進行中です。 解析したコードのうち興味を惹かれたもの、重要そうなものを中心にブログ記事にまとめていく予定です。 詳解LinuxカーネルやLinuxカーネル2.6解読室を執筆していたころよりLinuxカーネルは大きく膨れ上がっています。 どこまで辿り着けるかは分かりませんが、気長にお待ちください。 対象Linuxカーネルのバージョンは6.8 ブログ執筆中に興味深い機能が取り込まれたら、より新しいバージョンのカーネルについて解説する

    Linuxカーネル解読室 再び - VA Linux エンジニアブログ
  • Linux Effective Coredump - Qiita

    はしがき この記事はLinux Advent Calendar 2018に投稿する予定だったけど、日付に間に合いそうになかったため取りやめて、Advent Calendar関係なしに投稿する記事になります。 はじめに この記事は全国300万人のCoredump芸人を気で目指すITエンジニアたち(当社調べ)を応援するために書かれたものである。生半可な気持ちではこの道を極めるのは不可能だ。かつては志を持って挑んだものの破れそして去っていた同士を私はたくさん見てきた。この記事を読み始める前にあなたが当にCoredump芸人を欲するのか今一度見つめ直してほしい。 ...て当? 当のはじめに この記事では、Linuxでcore dumpファイルを作るように設定するところから、実際にデバッグするところまでを、流れとして解説する。 ちょっと執筆環境の都合上、少し古いLinux-4.16あたりを見

    Linux Effective Coredump - Qiita
  • C10K 問題、実は理解していない

    お願い 「C10K 問題とは何か」がわかる方は是非 Issue や Twitter などで教えてください。 追記: 自分の立場 1req ごとに 1 native thread を割り当てていたら、クライアントの数が増えれば増えるほど負荷が高まるのは当然だ。ただハードウェアの性能的に余裕があっても性能が劣化することがあり、それを C10K 問題と呼ぶ。C10K 問題は fd, pid の枯渇、スレッドを固定長サイズで確保することによるメモリの無駄遣い、コンテキストスイッチコストを含む。これを解決する方法が 1req ごとに 1 native thread を割り当てない技術で、シングルスレッド+イベントループ+IO 多重化といったテクニックや M:N モデルにつながる。 追記: @naoya_ito さんに解説してもらった当時の歴史的背景 https://twitter.com/naoya

    C10K 問題、実は理解していない
    nharuki
    nharuki 2023/04/10
    いろんなハードリミットがあって時代とともにそのリミットが個別に上昇してるせいで現代で「C10K」って言うと「結局あれはなんだったっけ」となっちゃうのかな
  • いちいちシェルコマンド思い出せないので、ChatGPTで自然言語からスクリプトを生成するツールつくった - Qiita

    いちいちシェルコマンド思い出せないので、ChatGPTで自然言語からスクリプトを生成するツールつくったPythonOpenAIChatGPTlangchain はじめに ChatGPT APIが出たので早速さわってみました。せっかくなので何か便利なものをということで自分向けに使えそうなツールをつくっていたら 良いかんじに動作したのでご紹介します。 つくったものは、「ChatGPTを用いた自然言語によるシェルコマンドランチャー」です。百聞は一見にしかずと言うことでまずは動作するところをみてください。 概要 wannaコマンドは、ChatGPTを用いた自然言語によるシェルコマンドランチャーです。自然言語によって、bash scriptを生成し、名付けし、管理できます。 コマンドライン上での操作は簡単に多くのことを行うことができるため、非常に便利です。しかし、多くのコマンドやオプションの組み合わ

    いちいちシェルコマンド思い出せないので、ChatGPTで自然言語からスクリプトを生成するツールつくった - Qiita
    nharuki
    nharuki 2023/04/06
    過去に同じようなこと訊いてたらその時に保存したコマンドを提案してほしいな
  • prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー

    Catalyst を POE で動かす Engine の Catalyst::Engine::HTTP::POE という実装が CPAN にあります。"Single-threaded multi-tasking Catalyst engine " だそうです。"Single-threaded" と言いつつも実装を覗いてみると環境変数 CATALYST_POE_MAX_PROC を 1 よりも大きく設定することで prefork する実装になってます。POEシングルスレッドではアプリケーション内で発生するブロックを避けることが難しいのでそのための実装じゃないかなと思います。 ところでこの Catalyst POE エンジン、prefork の実装はどのように行っているかというと POE から prefork と名の付いたイベントが発生するとおもむろに子プロセスを生成する、というのもの。複数の

    prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー
  • Linux でのハングタスクについて - 赤帽エンジニアブログ

    Red Hat でコンサルタントをしている菅原と申します。 この記事では、意外とあまり説明されていないような気がする Linux システムで発生するハングタスクについて少し説明したいと思います。現場のシステムでもハングタスク検知の設定がされていることが多いと思いますが、ハングタスクとは何なのかを正しくご理解いただくことで、ハングタスク検知を行う目的が明確になること、また、実際の障害事例もご紹介することで、通常あまりハングタスクと関連づけて考えないような設定でもハングタスク発生につながる場合があることを知っていただき、少しでもシステム管理や障害の理解、障害対応などのお役に立てれば幸いです。 なお、この記事では RHEL のみを対象に書いていますが、他の Linux ディストリビューションにも適用される内容と思います。 ハングタスク (hung tasks) とは ハングタスクとは読んで字のご

    Linux でのハングタスクについて - 赤帽エンジニアブログ
  • Linux カーネル 最近のコンテナ関連新機能 / TechFeed Experts Night#7

    TechFeed Experts Night#7 〜 コンテナ技術を語る」の講演資料です。 参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。

    Linux カーネル 最近のコンテナ関連新機能 / TechFeed Experts Night#7
  • 名前解決サービスを自作する - Qiita

    はじめに 名前解決サービスって? 皆さんが今お使いのネットワーク(LAN)には、「example」という名前のPCは接続されているでしょうか? 臨時使用の仮想マシンを作る際に foo とか hoge の様な名前のマシンを構築することはあるかもしれませんが、普通はそんなコンピューター名にはしないと思います。また、/etc/hostsに「example」という名前に関する定義はあるでしょうか? たとえば、127.0.0.1 exampleと書かれていれば、ping exampleを実行すると、自マシンからのping結果が返ってくるはずです。 ここから先は、「example」という名のホストは存在せず、/etc/hostsにもそのような定義はなく、ping exampleを実行すると、ping: unknown host exampleという結果が表示される前提で話を進めます。 ホスト名からIP

    名前解決サービスを自作する - Qiita
  • Linux I/O のお話 write 編 - naoyaのはてなダイアリー

    write はページに dirty フラグを立てるだけなので決してユーザープロセスを待たせない って、当にそうなんでしょうか?(否定しているわけではなく、純粋な疑問です。) と質問をもらったので、最近追ったことをここでまとめます。かなり長文です、すいません。また、まだまだ不勉強なので間違っているところもあるかもしれません。ツッコミ大歓迎です。 まず、オライリーのカーネルの 15章 ページキャッシュ 15.3 汚れたページのディスクへの書き込み から引用。 ご存知のように、カーネルは、ブロック型デバイスのデータを含むページをページキャッシュに蓄えています。プロセスが何らかのデータを更新した場合は、必ず対応するページに汚れている印をつけます。すなわち、PG_dirty フラグを設定します。 UNIX システムでは、汚れたページのブロック型デバイスへの書き込みを遅延することができます。この方

    Linux I/O のお話 write 編 - naoyaのはてなダイアリー
    nharuki
    nharuki 2022/08/13
    write はプロセスをブロックしない
  • nmcliチートシート - Qiita

    概要 nmcliのマニュアルを読んでたら思いの外色々出来ることが分かったけれども、いかんせん情報量が多くて読みづらかったので自分が使いやすい様にまとめました。 (20191127 デバイスとコネクションの説明を追加) デバイスとコネクション コマンドの説明に入る前にNetworkManagerで多用されるこの概念について説明しておきます。 デバイスはその名の通りデバイスを指し、ifconfig コマンドやip コマンドで確認出来るNIC 識別名と同様の役割を果たします。コネクションは1 つのデバイスに複数の設定を保持しておき、ユーザが柔軟に接続を変更できるように導入された概念です。より一般的に言えば接続プロファイルとも言えます。 このコネクションに保持されている設定ですが、反映されるのはコネクション接続時である点に注意してください。つまり、既に接続されているコネクションは一度コネクションを

    nmcliチートシート - Qiita
  • この個人サイトは自作OSで動いています

    追記 (2022 5/29): サーバ代をケチるべくVercelに移行しました。動いていたソースコードは ココ に置いてあります。 あなたの予想に反して、このページが見えているでしょうか?このWebサイトは自作OSのKerlaが提供しています。 これは自作OS Advent Calendar 2021の23日目の記事です。 自作OS「Kerla」の紹介 Kerla(かーら)はRustで書かれたLinux ABI互換モノリシックカーネルです。今年の春頃から作り始め、DropbearというSSHサーバが動作する程度には基的なUNIXの機能が実装されています。具体的には、ファイルの読み書きやUDP/TCPソケット、fork/exec、シグナル、擬似端末といったものです。 カーネル実装の雰囲気を軽く紹介すると、Kerlaでは以下のようにシステムコールが実装されています。 /// write(2)

    この個人サイトは自作OSで動いています
    nharuki
    nharuki 2022/01/03
    ついにRustがここまで・・・次なる世界が始まった感
  • インフラエンジニアを20年やってて初めて知ったtopコマンドの表示を劇的に見やすくする方法 | 株式会社ビヨンド

    こんにちは、カナダに来て1年弱ですが、いまだに"how are you?"にアイムファインセンキューと返してしまう全然英語が上達してない聖賢です。 インフラエンジニアならみんな大好きtopコマンド、おそらくビヨンドの中ではサーバ運用の中で最初に覚えるコマンドじゃないでしょうか。 実は結構奥が深いコマンドでいろんなことができるので、これまでドヤ顔で「こんなこともできるんやで」と上司の威厳、、、もとい先輩としての経験を後進に伝えていたのですが私も最近になって初めて知った超便利な使い方を紹介したいと思います。 ちょっと長いですがお付き合いください。 普通にtopコマンドを実行すると以下のような画面が表示されます 結構これだけでもサーバ運用には重要な情報が詰まっているのですが、topコマンドの見方などは他でも色々と紹介されていると思うので今回は割愛します 今回はこのtopコマンドの表示を最終的にこ

    インフラエンジニアを20年やってて初めて知ったtopコマンドの表示を劇的に見やすくする方法 | 株式会社ビヨンド
  • POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!ShellScriptBashshellPOSIX はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは + の方が優れているのですが ; ばっかり使われているのを見ると、意外と知られてない気がします。 少しだけ予備知識として、-exec {} ; は -exec {} \; と ; をバックスラッシュでエスケープするのがよく見る使い方

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita
  • 知っておきたかったLinuxサーバ設計、構築、運用知識まとめ - hiroportation

    サーバ業務周りの管理、運用について役に立ちそうなナレッジをまとめました。 長期的に書いているため用語に統一性がなかったり、不足分など随時修正したいと思います。 1. サーバ設計 サーバスペックはどうするべき? 使用するOSは? CentOS開発終了について MWは何を使うべきか Webサーバ構築にはどちらを使うべき?Apache?Nginx? サーバセキュリティで最低限押さえておきたいことは? listenするポートは最小限にしましょう ファイアウォール設定で送受信IPアドレス、ポートの通信制御はしておきましょう 外部に出る際にはプロキシサーバを経由するようにする 随時パッチを当てるようにする linuxでのアンチウイルスソフトの検討 個人アカウントで変更系コマンドは実行させないようにする ログについて考えること ストレージ容量には気をつける データベースはどう決めたら良いか MySQL

    知っておきたかったLinuxサーバ設計、構築、運用知識まとめ - hiroportation
  • シェルのパイプの速度(進捗バー) は pv で - Qiita

    シェルでコマンドをパイプをつなげている時、 どれくらいの速度でパイプをデータが通過しているのか知りたい事がある。 pv コマンドを使うと分かる。 pipe viewer の略で pv らしい。 使用例

    シェルのパイプの速度(進捗バー) は pv で - Qiita
  • システム負荷切り分け自分メモ - Qiita

    概要 CentOSでシステムのボトルネックを調査する時の問題切り分け方法の自分メモ。 前提 カーネルモードでCPUが使われるのは、割り込み、システムコール、カーネルスレッド ロードアベレージとは CPUの実行権限が与えられているのを待っているタスク ディスクI/Oが完了するのを待っているタスクの 2つの状態のプロセスの数 切り分けフロー LA高いか? 低い ネットワークなどがボトルネックになっているかも。muninなど、NWに関するグラフを見ると帯域が圧迫しているなどありえる OSの設定などがボトルネック。カーネルのsynパケットの受付数が低いなど。 アプリケーション、OSのログ、各種ログを見ることが大事 ↓ LA高い場合 vmstatで負荷の特徴把握 ↓ CPU負荷 or IO負荷 どちらか cpu負荷: us列, sy列 が高い IO負荷: b列をみる。IO列は低くてもIOが高い場合が

    システム負荷切り分け自分メモ - Qiita
  • cgroupsを利用したリソースコントロール(RHEL7) - Qiita

    cgroupsとは cgroups(Control Groups)とは、「プロセスをグループ化して、 リソースの利用をコントロール」するカーネル機能で、 Linux 2.6.24からマージされています。 具体的には、グループ単位でリソースの割り当て、 優先度、管理、モニタリングなどが設定できます。 cgroupsそのものはプロセスを「コントロールグループ」 と呼ばれる単位にまとめるだけで、リソースコントロールを 行うにはコントロールグループに「サブシステム」 と呼ばれる抽象化されたリソース群をつなげる必要があります。 主なサブシステムには、次のようなものがあります。 ・cpu CPUへのアクセス ・cpuacct CPUについての自動レポートを生成 ・cpuset マルチコアCPUのコア単位およびメモリノードを割り当て ・memory メモリに対する制限設定とメモリリソースについての自動レ

    cgroupsを利用したリソースコントロール(RHEL7) - Qiita