タグ

関連タグで絞り込む (274)

タグの絞り込みを解除

Linuxに関するsgykfjsmのブックマーク (83)

  • 低レイヤを知りたい人のための Cコンパイラ作成入門

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

  • rsyslogとjournaldのこと

    デーモンは、図中の中上のユーザプロセスにあたり、syslog(3)を呼んで/dev/logにメッセージを送る。syslogdはこれを経由してメッセージを受け取り、facilityとlevelに応じてファイルに書くとかなんとかするわけだ。ではjournald導入で何が変わったのだろうか? journaldは元々syslogdのいた位置を占め、いったんすべてのメッセージを受け取る。またjournaldはこれ以外にも、たとえば systemd経由で起動したデーモンのSTDERRも受け取るようにできている。またjournaldは、syslogdが集めなかったメタ情報も集める。非常に細かな大量の情報を集めて、受け取ったメッセージと共にジャーナルとして保管する。このジャーナルは、デフォルトでは一時的な保管場所 /run/log/journal に保管される。この保管場所は小さいので時間が経つとすぐに消

    rsyslogとjournaldのこと
  • HTTPのためのTCPチューニング (Best Current Practice) - ASnoKaze blog

    HTTPを効率よく使用するためにTCPのチューニングはかかせません。 Best Current Practiceカテゴリとして「TCP Tuning for HTTP (draft 00)」というInternet-Draftが提出されているので、ざっと目を通した。(割と適当) 大きく分けて下記の5つについて書かれており、特筆のない限りHTTP/1.1でもHTTP/2有効なプラクティスです。 2 Socket planning 3 TCP handshake 4 TCP transfers 5 Re-using connections 6 Closing connections (1はイントロダクション 2 Socket planning 2.1 Number of open files 殆どのOSでソケットを開ける数は、オープンできるファイル数と等しいです。 その上限がボトルネックになって

    HTTPのためのTCPチューニング (Best Current Practice) - ASnoKaze blog
  • どさにっき

    2008年4月21日(月) ■ 無題 _ 今朝の電車でおっさんが読んでたスポーツ新聞からちょっと見えてた見出し。頭のおかしい人が新幹線で全裸になってタイーホ。春だなぁ。 _ 出社してからニュースサイトを巡回して、それが ファーストサーバの社長だったと知る。あぁ。 _ ち、ちがうよっ、春だから頭のおかしい人が湧いてきたんじゃないよっ。だってレンタルサーバ会社の社長だよ? 頭がおかしいなんてことはないよ。最近のデータセンターは電力問題とか熱問題とかいろいろ大変だからね、きっと陽気がよくなってあったかくなったから熱暴走を起こして、その冷却のために大事なところを放熱してただけなんだよっ。 _ てか、ファーストサーバっていつのまにか yahoo の系列になってたのか。昔はクボタ(もちろん農業機械のクボタのことだ)の子会社だったよね、たしか。 2008年4月28日(月) ■ 無題 _ メール屋を廃業し

  • Linux SYNパケット取りこぼし - LowPriority

    Linuxで負荷も問題になるほど高くなくlisten及びsynのbacklogも溢れてないのに 特定のホストからのみSYNを吸い込んでSYN-ACKを返さない事がある場合があった。 必ず吸い込むというわけではなく、一発で通る場合と数回再送受けてから処理するのも あったりして謎な感じ。tcpdumpで見てもパケット単位の不整合は特に見あたらない。 受け付けている環境で変更されていたTCPパラメータは以下で、syncookies以外は IN/OUTどの部分の処理に関わるのかDocument読んでも良く解らないので、それぞれに ついて参照箇所を調べてみた。(PATHはKERNELのnet/以下) net.ipv4.tcp_tw_reuse (sysctl_tcp_tw_reuse) Outbound Connectionだけ影響 ipv4/tcp_ipv4.c:tcp_v4_connect ip

    Linux SYNパケット取りこぼし - LowPriority
  • [unix] Linux SYNパケット取りこぼし (2) 2007-05-21 - LowPriority

    前回の続き。 パケット自体を零さずに処理に入った後にSYNを落とすのは以下3パターン。 syncookie無効時にsynのbacklog(tcp_max_syn_backlog)が溢れている listenのbacklogが溢れている(3way-handshake完了後のaccept待ち接続) net.ipv4.tcp_tw_recycleの制限に抵触 で、今回問題になっていたのは最後のtcp_tw_recycleへの抵触だった。 現象として発生しうるのは、以下の条件をすべて満たす場合 サーバ側でnet.ipv4.tcp_tw_recycleが有効 TCPタイムスタンプオプションを使用 同一IPからの接続でセッションを跨ぐとセットされるTCPタイムスタンプの値が戻る場合がある 最後の条件が微妙だが、TCPタイムスタンプの値としてセットされる値は起動時を 起算時にしていたりと実装によって初期値

    [unix] Linux SYNパケット取りこぼし (2) 2007-05-21 - LowPriority
  • JShellで始めるJava入門 - Javaの世界を覗いてみる - Qiita

    JShellでJavaを始めてみましょう。 目的 プログラム未経験者が、Javaプログラミングで出てくるいろいろな概念をなんとなく把握する。 ※ この記事をベースに書籍化した「プロになるJava」が刊行されています。 環境設定 まずは環境設定からです。 こちらからJDKをダウンロードします。 http://jdk.java.net/18/ コマンドラインに不慣れな人は、Adoptiumでインストーラ付のパッケージを使うといいと思います。17LTSでも構いません。 https://adoptium.net/ MacLinuxの人は、tar.gzをダウンロードして

    JShellで始めるJava入門 - Javaの世界を覗いてみる - Qiita
  • Linux Containers - LXD - イントロダクション

    LXD とは? ¶ LXD([lɛks'di:]🔈)は次世代のシステムコンテナおよび仮想マシンのマネージャーです。コンテナや仮想マシン内部で実行される完全な Linux システムに対する共通の使い勝手や操作感を提供します。 LXD は、多数の Linux ディストリビューションが利用できる、あらかじめビルドされたイメージをベースとしています。さまざまなタイプのストレージバックエンドやネットワークをサポートし、個人のラップトップやクラウドインスタンスからサーバーラック上のハードウェアまで、様々なハードウェアにインストールでき、色々なユースケースに対応する柔軟性と拡張性を備えています。 LXD を使うと、シンプルなコマンドラインツールや REST API を直接使ったり、サードパーティーのツールやインテグレーションを使ったりして、コンテナや仮想マシンといったインスタンスを管理できます。LXD

  • Radix Tree - Linuxカーネルメモ

    1. 概要 Tree検索を行うRadix TreeのLinuxでの実装メモ。 Radix Treeの機能はlib/radix-tree.cで提供される。実際の使用例としては、ページキャッシュのページを管理するのにRadix Treeを使っている。 2. データ構造 LinuxでのRadixツリーの構造を図1に示す。 2.1 Treeの管理データ Radix Treeの管理の大元のデータとしてstruct radix_tree_rootがある。このデータはRadix Tree関連関数でどのTreeに対して操作を行うのか指定するのに使われる。 このデータのrnodeがルートノード(Treeトップのノード)を指している。heightはTreeの高さを表しており、例えばheight=1だと、ルートノードのみの1段のTreeであることを意味する。 2.2 Treeのノード Treeの各ノードはstr

  • The Definitive Guide to Linux System Calls | Packagecloud Blog

    TL;DR This blog post explains how Linux programs call functions in the Linux kernel. It will outline several different methods of making systems calls, how to handcraft your own assembly to make system calls (examples included), kernel entry points into system calls, kernel exit points from system calls, glibc wrappers, bugs, and much, much more. Here is a summary of the topics this blog post will

  • Using Docker-in-Docker for your CI or testing environment? Think twice.

    ~jpetazzo/Using Docker-in-Docker for your CI or testing environment? Think twice. The primary purpose of Docker-in-Docker was to help with the development of Docker itself. Many people use it to run CI (e.g. with Jenkins), which seems fine at first, but they run into many “interesting” problems that can be avoided by bind-mounting the Docker socket into your Jenkins container instead. Let’s see wh

    Using Docker-in-Docker for your CI or testing environment? Think twice.
  • CentOS7から変わったネットワーク系のコマンド - Qiita

    CentOS7から、ifconfigやarp、netstatなどのよく利用しているネットワーク系のコマンドが非推奨となり、iproute2に置き換わってます。 まぁ、 yum install net-tools で、今まで通りのコマンドが使えるようにはなりますが、非推奨のものなので、後々消えてなくなるでしょう。 それなら、今のうちにiproute2のコマンドを覚えてしまう!ってことで、普段自分が利用しているものを中心にまとめてみました。 ifconfigの代わりは? ip addrですね。略してip aでも同じ内容が表示されます。 こんな感じに表示されます。少々表示のされ方が変わってますよね。。。まぁ、慣れるでしょう。 特定のインターフェースのみが見たい場合は、ip a show dev device名となります。 routeの代わりは? ip routeですね。略してip rでもOK.

    CentOS7から変わったネットワーク系のコマンド - Qiita
  • Setting nproc in /etc/security/limits.conf has no effect in Red Hat Enterprise Linux. - Red Hat Customer Portal

  • Linuxエンジニアらしいパッチのつくりかた - Qiita

    以前 diffコマンドを使ってソースコードのパッチの作ったところ、こんなのLinuxエンジニアじゃないじゃん。と笑われてしまいました。 diffコマンドでのパッチの作り方をググった時、どのオプションを作るべきかわからなかったり、そもそもどのオプションを付けるかさえ考えない人もいるかもしれません。 かっこいいLinuxエンジニアになるためには、適切なオプションを付けましょう! diffコマンドでのパッチの作り方 Linuxカーネルのドキュメントフォルダ(Documentation/)には、SubmittingPatchesというドキュメントがあります。 このドキュメントの1章には以下のように書かれています。 Use "diff -up" or "diff -uprN" to create patches. git generates patches in this form by defau

    Linuxエンジニアらしいパッチのつくりかた - Qiita
  • カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 - - るくすの日記 ~ Out_Of_Range ~

    0. はじめに 記事は、Linuxを対象としたカーネルエクスプロイトの入門記事です。 カーネルエクスプロイトというのは、Linuxや*BSD、Windowsを始めとするカーネル自身の脆弱性を突くエクスプロイトです。 基的にカーネルはシステム内で最高権限を持つ特権モードで動作しているので、ここを悪用されるとシステムの大部分(ほぼ全て)を掌握されてしまいます。 エクスプロイトと言うと、普通はユーザー空間で動作しているアプリケーションのバグをつく物が多いですが、これだと限られたレベルの権限しか奪えません。 SELinuxやjailを始めとする、OSレベルでの保護機構に阻まれるとたちまち効力を失ったりします。 しかし、カーネル自体の脆弱性をつくカーネルエクスプロイトを利用すると最高権限での任意コード実行が可能なため、大抵の保護機構はものともしません。 このカーネルエクスプロイトが特に効力を発揮

    カーネルエクスプロイト入門 - Linuxカーネル解析の基礎 - - るくすの日記 ~ Out_Of_Range ~
  • Linux におけるスレッド数の上限 | yunabe.jp

    並行 (Concurrent) 処理を実装する方法としてスレッドは非常に強力なツールです。 スレッドを使えば同時に1つの処理しか行えない既存のプログラムに大きな修正を加えることなく、 並行処理を実装することが可能です。 またイベントとコールバックを複雑に組み合わせた非同期的なプログラムに比べて、 同期的なプログラム (例えばファイルの読み込みにコールバックが出てきたりしない普通のプログラム)は プログラムの流れを自然に書くことができ、 可読性・保守性・テスト、デバッグのしやすさの面で遥かに優れています。 スレッドを使うとプログラムをそれほど複雑・難読化にせずに並行処理が実装できます。 一方でスレッドを使った並行処理には欠点もあります。 欠点の1つは、スレッドモデルでは1つの処理に対して1つのスレッドを用意するので、 システムのスレッド数の上限で同時に行える処理の数が決まってしまう点です。

  • CPU使用率は間違っている | Yakst

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

    CPU使用率は間違っている | Yakst
  • Moby Projectによる新たなImmutable infrastructureの可能性 - Qiita

    Dockerconf2017で発表のあったlinuxkitとMoby Project。 デモを見て衝撃を受け、今後のDockerに新たなImmutable infrastructureの可能性を感じたので調べたり試したりしてみました。 実際に動かしてみたスクリーンショットも載せてあります。 皆さんにも僕の感じた衝撃と可能性を知ってもらいたいです。是非最後まで読んでいってください! (20170419 10:00 編集) Moby Projectとlinuxkitについて認識が違っていたことに気付いたので修正しました。 これを読んでわかること Moby Projectとlinuxkitの概要 mobyを使ってbuildやrunをする方法 mobyを使ってGCPでインスタンスを立てる方法 環境 OS: MacOSX Sierra Go: version 1.8.1 docker: versio

    Moby Projectによる新たなImmutable infrastructureの可能性 - Qiita
  • あるSPソーシャルゲームのチューニングメモ - Qiita

    WEBサーバが通常40台でGvGバトル時は60台に増やすというスケール設定になっている。 CPUもメモリも使用率高くないのにサーバ台数増やさないとレスポンスが悪くなる。 WEBサーバ:CPU10%ぐらい、メモリ10%ぐらい DBサーバ:CPU10~20%ぐらい、メモリ20%ぐらい これ以上サーバを増やしたくないし、できれば減らしたい。 調査で使うもの New Relic https://newrelic.com/ これをWEBサーバのどれか1台にインストールしておきます。 最初の30日は有料版の機能も使えるのでその期間で一気にボトルネックを探りました。 URLごとにどんなメソッドやSQLが何回実行されているかなど見れるのでチューニングが捗ります。 無料で使える機能だけでも割と使えます。 アラート閾値(初期値)が少し高めなのでチューニング中は低く設定しましょう。 そうしないと重い箇所を特定で

    あるSPソーシャルゲームのチューニングメモ - Qiita
  • 「Systemd」を理解する ーシステム管理編ー | ギークを目指して

    前回の記事「Systemd」を理解するーシステム起動編ーでは、Systemdの概念とSystemdによるLinux起動プロセスの内容を解説させていただいた。第二回となる今回の記事では、Systemdを利用したシステムの管理方法を記載していきたいと思う。 今回の記事ではSystemdのsystemctlコマンドを利用したサービス(プロセス)管理方法と、journalctlコマンドを利用したSystemd journalログ照会の2章立てでSystemdによるシステム管理を解説させていただく。また、各コマンドは先日リリースされたCentOS7上で動作確認させていただいた。 systemctlを利用してサービスを管理する Systemd環境にてサービス管理を行う場合、主にsystemctlコマンドを利用するが、一部、従来のコマンドも利用可能となっている。使途別のコマンドを見ていこう。 Unit