タグ

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

  • 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
  • CentOS Streamは継続的デリバリーです - 赤帽エンジニアブログ

    この記事はStef Walterによる CentOS Stream is Continuous Delivery の翻訳です。 継続的デリバリーの基礎:難しいことを継続的に行い、簡単になるようにする。 外から見ると、RHEL(そしてCentOS Linuxコンテンツ)を構築する方法は、この10年間で変わっていないように見えるかもしれません。しかし、その内部ではRHELを開発する方法について、顧客に影響を与えることなく記念碑的な変革を成し遂げようとしています。 私は様々なカンファレンスでこの話をしてきましたが、CentOS Linux 8とCentOS Streamについての発表は、ここで話をするきっかけを与えてくれました。 3年前、RHELエンジニアリングで働いている私たちの何人かはアイデアを持っていました:継続的インテグレーション、継続的デリバリー、予測可能なリリース頻度などの現代的な開

    CentOS Streamは継続的デリバリーです - 赤帽エンジニアブログ
  • CentOS Streamへのシフトでうろたえないための手引き

    何が起こったの? CentOSプロジェクトがCentOS Streamに開発をシフトしていくことを宣言しました。これに伴ってRHEL 8の再構築としてのCentOS Linux 8は2021年に終了予定となりました。 ref: https://blog.centos.org/2020/12/future-is-centos-stream/ CentOSはLinuxの2大ディストリビューションの一つであるRed Hat Enterprise Linuxから商用パッケージを抜いてリビルドしたバージョンです。 商用パッケージが抜いてあるため、サポート無しで良ければ無料で番環境で利用できるという事でOSの商用サポートを必要としないようなケースでよく利用されています。 今回、CentOS Linuxが終了してCentOS Streamになる事でCentOS終了!? という感じで一瞬ビビりましたがそ

    CentOS Streamへのシフトでうろたえないための手引き
    nharuki
    nharuki 2020/12/10
    「公式の見解」としてはβではなく寧ろ「より早いタイミングでBugfixが当たってるからRHELより安定してるくらい!」
  • ipmitoolコマンドで覚えておきたい使い方8個 | 俺的備忘録 〜なんかいろいろ〜

    物理サーバを管理・運用する際、ベンダーによって呼称は異なると思うが、マネジメントポート(管理ポートとか)は便利に使うことも多いだろう。 ただ、台数が多いといちいちWebコンソールからアクセスしてるのは面倒臭い。コマンドでできる内容ならそちらから作業したほうがいいだろう。 そんなときに非常に役に立つのが、IPMI(システムボードを管理しているBMCという処理装置を操作するための規格)を扱うためのコマンド「ipmitool」コマンドだ。 これがあれば、マネジメントポートで行える操作の大半はコマンドから行える(さすがにリモートKVM機能でWindowsとかのGUI操作は無理だけど)。 今回は、このipmitoolで最低限覚えておきたい使い方を抜粋して記述する(機能が多すぎて全部はちょっと。。。そもそもそんなに機能使わないだろうし)。 1.ローカルの物理サーバへの操作を行う ローカル(ipmito

  • /etc/init.d/xxxを直接起動してもsystemctl経由になる - てきとうなメモ

    $ sudo /etc/init.d/hello start Starting hello (via systemctl): [ OK ]従来のinit.dの起動スクリプト直接実行しても、こんな感じでsystemctl経由で起動される。 init.dの起動スクリプトは/etc/init.d/functionsで処理されている。/etc/init.d/functionsは起動スクリプトを実行する際の便利なシェル関数群だったのだが、CentOS7ではsystemctlへのリダイレクトも実施している。 if [ $PPID -ne 1 -a -z "$SYSTEMCTL_SKIP_REDIRECT" ] && \ ( /bin/mountpoint -q /cgroup/systemd || /bin/mountpoint -q /sys/fs/cgroup/systemd ) ; then c

    /etc/init.d/xxxを直接起動してもsystemctl経由になる - てきとうなメモ
    nharuki
    nharuki 2020/05/08
    知らずに5年くらいCentOS7上でinitスクリプト使い続けていた件