タグ

linuxとLinuxに関するyuroyoroのブックマーク (162)

  • Socket Sharding in NGINX Release 1.9.1

    F5 Sites DevCentral Connect & learn in our hosted community F5 Labs The latest threat intel and research to help protect your apps MyF5 Your key to everything F5, including support, registration keys, and subscriptions Partner Central Research and support for partners LearnF5 Guidance, insights, and how to use F5 products Contact F5 Contact F5 Sales Talk to an F5 sales representative Contact F5 Su

    Socket Sharding in NGINX Release 1.9.1
    yuroyoro
    yuroyoro 2015/05/27
    SO_REUSEPORT
  • Linuxでロードバランサやキャッシュサーバをマルチコアスケールさせるためのカーネルチューニング - ゆううきブログ

    記事の公開後の2016年7月にはてなにおけるチューニング事例を紹介した。 はてなにおけるLinuxネットワークスタックパフォーマンス改善 / Linux network performance improvement at hatena - Speaker Deck HAProxy や nginx などのソフトウェアロードバランサやリバースプロキシ、memcached などの KVS のような高パケットレートになりやすいネットワークアプリケーションにおいて、単一の CPU コアに負荷が偏り、マルチコアスケールしないことがあります。 今回は、このようなネットワークアプリケーションにおいて CPU 負荷がマルチコアスケールしない理由と、マルチコアスケールさせるための Linux カーネルのネットワークスタックのチューニング手法として RFS (Receive Flow Steering) を

    Linuxでロードバランサやキャッシュサーバをマルチコアスケールさせるためのカーネルチューニング - ゆううきブログ
  • Linux I/O のお話 write 編 - naoyaのはてなダイアリー

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

    Linux I/O のお話 write 編 - naoyaのはてなダイアリー
  • 80+ Linux Monitoring Tools for SysAdmins

    This post was originally published on the blog by Server Density, an infrastructure monitoring company that joined StackPath in 2018. It’s hard work monitoring and debugging Linux performance problems, but it’s easier with the right tools at the right time. This is why we decided to make the most comprehensive list of Linux monitoring tools on the Internet. To help you find the right tool, we sepa

    80+ Linux Monitoring Tools for SysAdmins
  • Understanding Linux CPU stats | Scout APM Blog

    Updated version of an article first published on February 24th, 2015. Your Linux server is running slow, so you follow standard procedure and run top. You see the CPU metrics: But what do all of those 2-letter abbreviations mean? The 3 CPU states Let's take a step back. There are 3 general states your CPU can be in: Idle, which means it has nothing to do. Running a user space program, like a comma

    Understanding Linux CPU stats | Scout APM Blog
  • 2012 年 7 月 1 日のうるう秒挿入時に発生した Linux カーネルの不具合に関する情報

    更新履歴 2012-08-28: URL 公開 2012-08-29: futex、hrtimer、MySQL の発生条件、NTP SLEW モードに関する @odhrfm さんからの情報、キーワード更新、その他いろいろ細かい修正 2012-08-30: 参考リンク追加 2012-09-01: LKML まとめシートの thread#50 を追加 2012-09-03: SLES カーネルの更新情報、per-cpu についての記述、blockdiag によるブロック図を追加 2012-09-11: LKML まとめシートの thread#52, #53 を追加 2012-09-12: LKML まとめシートの thread#54 〜 #58 を追加 はじめに 日時間 2012 年 7 月 1 日 9:00 にうるう秒が挿入されましたが、その際 Linux カーネルに起因する不具合により、

  • 閏秒を迎えるにあたってLinuxでは何を対策すべきか? | Act as Professional

    2016/12/27 更新Googleなどの大手IT企業がうるう秒対策済のNTPサーバが公開したため、これを利用する内容などを以下にまとめました。 元旦に実施される うるう秒の対策 まとめ2016/07/08 更新2017/1/1に閏秒の実施が決定されました。対応はこの記事のとおりで問題なさそうです。 2015/06/24 情報追加(2015/06/29 更新)下記の対応に関わるntpdの比較的新しいバージョンにSLEWモードで動作していても、うるう秒が挿入されるバグが発見されました。[redhat] これによりntp-4.2.8p3-RC1以降のバージョンでないとSLEWモードで動作していてもうるう秒が挿入されます。RedHatはntp-4.2.6p5-3.el6_6という対応済みのバージョンを提供しています。Ubuntuでは今日現在12.04LTS, 14.04LTSの2バージョンはパ

    閏秒を迎えるにあたってLinuxでは何を対策すべきか? | Act as Professional
  • Linuxのしくみを学ぶ - プロセス管理とスケジューリング

    プロセスとマルチタスクの実現 Linuxは、多数のプロセスを同時に動作させる事が出来るマルチタスク環境を実現しています。 psコマンドやtopコマンドを実行しプロセスのリストを取得すると多数のプロセスが実行中である事がわかります。 また、これらのプロセス全てが同時に平行して動作しているように見えます。 これはどのようにして実現されているのでしょうか。 一般的に、1つのプロセッサは同時に複数のプログラムを実行する事が出来ません1。 そこで、マルチタスクをサポートするOSでは複数のプロセスを非常に短い時間ずつ切り替えながら実行する事で、体感上は複数のプロセスが同時に実行されているように見せています(図1)。 このような仕組みを実現する為にどんな機能がカーネルへ実装されているのか順に見ていきましょう。 プロセスの切り替え CPU上で処理中のデータを失う事なく現在のプロセスから別のプロセスに切り替

  • パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD

    パイプライン は、最近のソフトウェアエンジニアリングにおいて、非常に便利な(そして驚くほど活用されていない)アーキテクチャパターンです。ソフトウェアでデータの流れを制御するためにパイプとフィルタを用いる考え方は、最初のUNIXシェルが作られた1970年代からあります。もしターミナルエミュレータでパイプ” | ”を使ったことがあるなら、”パイプとフィルタ”を活用できていることになります。以下の例を見てみましょう。 cat /usr/share/dict/words | # Read in the system's dictionary. grep purple | # Find words containing 'purple' awk '{print length($1), $1}' | # Count the letters in each word sort -n | # Sort l

    パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD
  • 名前や用途が似ているLinuxコマンドの整理 - ももいろテクノロジー

    いろいろあるLinuxコマンドを区別するためのメモ。 w系 wログイン中のユーザについて、実行中のコマンド名も含め表示する whoログイン中のユーザについて、ログイン時刻を表示する usersログイン中のユーザのみを表示する id自分の実ユーザ名、実効ユーザ名、所属グループを表示する whoami自分の実効ユーザ名のみを表示する last成功したログイン履歴を表示する lastb失敗したログイン履歴を表示する(要root権限) lastlog各ユーザの最終ログイン時刻を表示する $ w 22:44:42 up 12:19, 3 users, load average: 0.03, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user pts/2 192.168.56.1 21:16 2.00s 0.77s 0.00s w $ wh

    名前や用途が似ているLinuxコマンドの整理 - ももいろテクノロジー
  • 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
  • Osquery

  • よくわかるLinux帯域制限 | GREE Engineering

    矢口です。 みなさんはLinuxのtcという機能をご存知でしょうか。送信するパケットの帯域制御を行うことができる大変強力な機能で、グリーでもいくつかの用途で使用されています。 具体的な事例の一つはRedisです。Redisではreplicationを新規に開始する際やfailoverが発生しmasterが切り替わった際(特に2.6系)にストアされている全データが転送されます。しかし帯域制限をかける機能がないため、ネットワーク帯域を圧迫してしまう危険性があります。また通常のクライアントとの通信でも大量のクエリにより予想以上の帯域を使用してしまう可能性があります。このような場合にtcを用いることでRedisの使用する帯域をコントロールできます。 このように有用なtcですが残念なことに日語/英語ともにわかりやすい解説や詳細な情報は多くありません。 私も社内において使われていたtcの設定に問題が

    よくわかるLinux帯域制限 | GREE Engineering
  • Ethernetの受信処理

    10GbE、40GbEなどの極めて高速な通信をサポートするNICが、PCサーバの領域でも使われるようになってきている。 このような速度の通信をソフトウェア(OS)で処理し高い性能を得るには様々な障害があり、ハードウェア・ソフトウェア両面の実装を見直す必要がある。 セッションでは、ハードウェア・ソフトウェア両面にどのような改良が行われてきており、性能を引き出すにはどのようにこれらを使用したらよいのかについて紹介する。

    Ethernetの受信処理
  • linuxにシステムコール追加 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    久々にやってみようと思って、2.6.33でシステムコールの追加をしてみました。 やってみたら新しい発見があったり面白いですね。 copy_buffer.cというファイルは新規に作ったのと、それようにMakefileを弄ってます。 他のファイルはシステムコールを追加するために弄っているので、もし新規にシステムコールを追加するならここは変更する必要があります。 ファイルを新規に作らずに、既存のファイル内に関数を追加するなら、Makefileを弄る必要はありません。 テスト環境は仮想環境(kvm)でホスト・ゲストともにアーキテクチャはx86_64です。 システムコールの追加方法は、lwnの記事で最近のカーネルに対してシステムコールの追加に関する記事があったので、 それを参考に弄るファイルとかを調べました。 多分、最近のカーネルと昔のカーネルでは弄るファイルが多少変わってます。 最近はinclud

    linuxにシステムコール追加 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
    yuroyoro
    yuroyoro 2014/09/17
    SYSCALL_DEFINE
  • ファイルオープンと新フラグ

    多人数により日々改善が加えられるLinuxカーネルですが、その中にはまったく新しい機能もあれば、既存機能を拡張したものもあります。記事ではopen(2)に加えられた新フラグについて取り上げます。 O_TMPFILEフラグ ---- linux-3.11 2014年9月にリリースされたlinux-3.11では、ファイルオープン時に指定可能なO_TMPFILEフラグが追加されました。目的は従来のmkstemp(3)、tmpfile(3)と同様ですが、カーネルレベルで対応するため、効率とアトミック性が強化されます。glibcでは2014年2月にリリースされたv2.19でO_TMPFILEに対応しました。 従来のmkstemp(3)ファミリ、tmpfile(3)を用いる場合では、 一意な(と期待できる)ファイル名の生成 そのファイル名でファイルを作成/オープン という手順を踏みますが、一意性を保

    ファイルオープンと新フラグ
  • YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました | tech - 氾濫原

    ちょっと時間に対して話したいことが多すぎて、各分野での掘り下げが足りなかったとは思いますが、一通り下のほうまで盛りこみました。 電子工学について:自分は学校で電子工学を体系的に学んだことはありません。 YAPC 会期中はそこらへん歩いてます。

    YAPC::Asia で「ウェブエンジニアのローレベルプログラミング」という発表をしました | tech - 氾濫原
  • メモリ管理、アドレス空間、ページテーブル

    ◆プロセスのアドレス空間の実装 プロセスのアドレス空間 は、次のような領域に分割されて実装されている。 図? プロセスのアドレス空間の実現 各領域には、struct vm_area_struct が対応している。 テキストとデータ(初期値付き)は、vm_area_struct を経由して、実行形 式のファイルと結びついている。最初にアクセスされた時に実行形式のファイ ルから読み込まれる。 BSS、ヒープ、スタックは、ファイルと結びついていない。最初にアクセ スされた時に、0 で埋められたページ・フレーム(anonymous page)が割り当て られる。 各領域は、次のように実装されている。 テキスト 機械語を置く。VM_EXEC 属性と VM_READ属性が付いている。書き込み禁止 で共有可能。mm_struct の start_code と end_code が、開始番地と終了番地 を

    メモリ管理、アドレス空間、ページテーブル
  • Linuxの仮想 - 物理アドレスと、カーネル空間の概要 - Qiita

    あらまし cgroupsを勉強しようと、折角なので資源管理の一つであるLinuxの仮想記憶周りを前回読んでみました。 その最後に しかし、物理アドレスをLinuxではどうやって扱っているのでしょうか? 例えば、仮想アドレスから物理アドレスを得る、ページ構造体からそれが指している物理アドレスを得る方法が今ひとつ見えません。 と書きました。 そこで、今回、コードをうろつきつつ、この疑問にぶつかってみることにしました。 すでにcgroupsがどこかに行っていますが、最後にはわかると信じています(笑)。 なお、以下3点追記です。 (1)CPUアーキテクチャに依存したコードを見る場合、arch/x86の下の実装を参照します。 (2)流れがわかりにくい箇所もあります。が、ソースを読んで迷った過程をあえて記録に残したいと考えたからです。ご了解ください。 (3)ソースは手元にある3.15.6で、最新ではあ

    Linuxの仮想 - 物理アドレスと、カーネル空間の概要 - Qiita
  • Linuxのmmap()を通して、アドレス空間の扱いを垣間見る - Qiita

    近況 飲んで帰ってきて、気づいたらこんなの書いていました。 ちょっと具体性に乏しいので、もう少し後でパッチを書きます。 (でも、明日は会社の歓迎会で飲んでくるのだ) 前回のあらましと今回見るところ 前回、仮想アドレスと物理アドレスの紐付けをする処理とそのデータ構造のページテーブルを見ました。 そして、今回はユーザ空間へのアドレス空間マップを行うmmap()を見ることで、仮想アドレス空間の扱いの一端をかいま見てみましょう。 mmapの実装 mmapは以下の実装である。 (厳密に言うと、システムコールのベクタではないので「システムコールの開始地点」ではない) asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *arg) { struct mmap_arg_struct32 a; if (copy_from_user(&a, a

    Linuxのmmap()を通して、アドレス空間の扱いを垣間見る - Qiita