タグ付けされた質問 「kernel」

コンピューティングでは、カーネルはほとんどのコンピュータオペレーティングシステムの主要コンポーネントです。これは、アプリケーションとハードウェアレベルで行われる実際のデータ処理の間の橋渡しです。カーネルの責任には、システムのリソース(ハードウェアコンポーネントとソフトウェアコンポーネント間の通信)の管理が含まれます。

23
数百万のファイルがあるディレクトリでのrm
背景:物理サーバー、約2年、3Ware RAIDカードに接続された7200-RPM SATAドライブ、ext3 FSマウントnoatimeおよびdata = ordered、狂気の負荷なし、カーネル2.6.18-92.1.22.el5、稼働時間545日。ディレクトリにはサブディレクトリが含まれておらず、数百万の小さなファイル(〜100バイト)と、いくつかの大きな(数KB)ファイルがあります。 過去数か月の間に少しカッコウしたサーバーがありますが、ファイルが多すぎるためにディレクトリに書き込めなくなったのは先日だけです。具体的には、/ var / log / messagesにこのエラーをスローし始めました。 ext3_dx_add_entry: Directory index full! 問題のディスクには、多くのiノードが残っています。 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 60719104 3465660 57253444 6% / したがって、ディレクトリファイル自体に含めることができるエントリの数の制限に達することを意味していると思います。ファイルがいくつになるかはわかりませんが、ご覧のとおり、300万個以上になることはありません。それは良いことではありません、気に!しかし、それは私の質問の一部です:その上限は正確に何ですか?調整可能ですか?私が怒鳴る前に、私はそれを抑えたいです。この巨大なディレクトリはあらゆる種類の問題を引き起こしました。 とにかく、これらすべてのファイルを生成していたコードの問題を追跡し、修正しました。今、私はディレクトリを削除することにこだわっています。 ここにいくつかのオプションがあります: rm -rf (dir) 最初にこれを試しました。目立った影響なしに1日半走った後、私はそれをあきらめて殺した。 ディレクトリでのunlink(2):間違いなく検討に値しますが、質問はunlink(2)で削除するよりもfsckでディレクトリ内のファイルを削除する方が速いかどうかです。つまり、何らかの方法で、これらのiノードを未使用としてマークする必要があります。もちろん、これはfsckに/ lost + found内のファイルにエントリをドロップしないように指示できることを前提としています。そうでなければ、私は問題を動かしただけです。他のすべての懸念に加えて、これについてもう少し読んだ後、おそらく私が見つけることができるunlink(2)バリアントのどれも私がただ単に削除することを許可しないため、いくつかの内部FS関数を呼び出さなければならないでしょうエントリが含まれるディレクトリ。プー。 while [ true ]; do ls -Uf | head …
104 kernel  ext3  rm  directory 

7
ロードされたLinuxモジュールのパラメーター値をリストするにはどうすればよいですか?
ロードされたLinuxモジュールのパラメーター値をリストする標準的な方法はありますか?私が興味を持っているモジュールにはインターフェースがないので、私は本質的にこのLinuxカーネルモジュールパラメーターの質問に対する別の答えを探ってい/sys/modules/<module_name>/parametersます。
77 linux  kernel 

2
「dd」の「bs」オプションは本当に速度を改善しますか?
時々、「dd」の速度を上げるには、適切な「ブロックサイズ」を慎重に選択する必要があると言われています。 ここでも、ServerFaultの上、他の誰かが書いた「という... ...最適なブロックサイズは、ハードウェアに依存している」(イアン)または「...完璧なサイズは、システム・バス、ハードドライブコントローラ、特定のドライブに依存しますそれ自体、およびそれらのそれぞれのドライバー... " (chris-s) 私の気持ちが少し違っていたので(ところで:bsパラメーターを深く調整するのに必要な時間は、時間節約の観点から、受け取ったゲインよりもはるかに長く、デフォルトは合理的だと思っていました)、今日私はちょうど行きましたいくつかの迅速で汚れたベンチマークを通じて。 外部の影響を減らすために、私は読むことにしました: 外部MMCカードから 内部パーティションから そして: 関連するファイルシステムがアンマウントされている 「書き込み速度」に関連する問題を回避するために、出力を/ dev / nullに送信します。 少なくともHDDに関係する場合、HDDキャッシングのいくつかの基本的な問題を回避します。 次の表では、「bs」の値が異なる1GBのデータを読み取った結果を報告しました(このメッセージの最後に生の数値があります)。 基本的には次のようになりました: MMC:bs = 4(yes!4バイト)で、スループットが12MB / sに達しました。bs = 5以上から得た最大14.2 / 14.3までのそれほど遠くない値。 HDD:bs = 10の場合、30 MB / sに達しました。デフォルトのbs = 512で得られた95.3 MBよりも確かに低いですが、...重要です。 また、CPUのsys-timeはbsの値に反比例することは非常に明らかでした(しかし、bsが低いほど、ddによって生成されるsys-callの数が多くなるので、これは妥当と思われます)。 上記のすべてを言った今、質問:誰かがそのようなスループットに関与する主要なコンポーネント/システムとは何か(カーネルハッカー?)を説明できますか、そしてデフォルトよりも高いbsを指定する努力が本当に価値があるかどうか? MMCケース-生の数字 bs = 1M root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1M count=1000 1000+0 …
58 linux  kernel  dd  disk-image 

4
Linuxでスワップを無効にする最良の方法
カスタムコンパイルされた3.18.9カーネルを実行していますが、システムでスワップを無効にする最良の方法について疑問に思っています。違いがある場合は、initも使用します。 /etc/fstabブート時にスワップが動作/マウントしないように、スワップ行をコメント化または削除するだけで十分Support for paging of anonymous memory (swap)ですか、それとも有効になっていないことを100%確認せずにカーネルを再コンパイルする必要がありますか? 暗号化されたパーティションを実行し、ハードディスクへの偶発的な漏洩を防ぎたい。私のシステム仕様も十分に優れているため、スワップレス環境で生き残ることができます。
53 linux  kernel  swap  init 

1
vm.overcommit_memoryはどのように機能しますか?
デフォルト設定を使用する場合: vm.overcommit_memory = 0 vm.overcommit_ratio = 50 これらの値を/proc/meminfoファイルから読み取ることができます: CommitLimit: 2609604 kB Committed_AS: 1579976 kB しかし、vm.overcommit_memoryから0に2変更すると、特にamarokのように、変更前に起動できるのと同じアプリケーションセットを起動できません。に変更vm.overcommit_ratioする必要300があったため、制限を増やすことができました。これで、amarockを起動すると/proc/meminfo、次のように表示されます。 CommitLimit: 5171884 kB Committed_AS: 3929668 kB このマシンにはRAMが1GiBしかありませんがvm.overcommit_memory、0に設定する2とamarok は問題なく動作します。しかし、設定する場合、amarokは2GiB以上のメモリを割り当てる必要があります。それは正常な動作ですか?もしそうなら、例えば、Firefox(amarokの4-6倍のメモリを消費する)が変更の前後で同じように機能する理由を説明できますか?
49 memory  kernel  sysctl 

3
ソフト制限とハード制限
誰もが素人の言葉でソフト制限とハード制限の違いを説明できますか? ソフト制限とハード制限を同じに設定する必要がありますか?または、ソフトを大幅に低くする必要がありますか?システムはどちらの方法でもメリットがありますか? ありがとう。
43 linux  ubuntu  kernel  ulimit 


2
カーネルのアンインストール後に破損した/ vmlinuzおよび/initrd.imgシンボリックリンク
OS:Ubuntu 8.04 LTS Server Edition 次のコマンドを使用して、カーネルの更新をロールバックしました。 sudo apt-get remove linux-image-2.6.24-24-server アンインストールは成功しましたが、apt-get終了する前に次のメッセージが表示されました。 The link /vmlinuz is a damaged link Removing symbolic link vmlinuz you may need to re-run your boot loader[grub] The link /initrd.img is a damaged link Removing symbolic link initrd.img you may need to re-run your boot loader[grub] このメッセージを心配する必要がありますか?GRUBを再実行する必要がありますか?GRUBを再実行する必要がある場合、どうすればこれを実行できますか? …

6
多数の接続と小さなパケットの高いトラフィックがあるギガビットネットワークでのTCPパフォーマンスの改善
「大量の接続と小さなパケットのトラフィックが多いギガビットネットワーク」でTCPスループットを改善しようとしています。私のサーバーOSはUbuntu 11.10サーバー64ビットです。 TCPソケット(すべて同じポート上)を介してサーバーに接続されているクライアントは約50.000(および成長中)です。 パケットの95%のサイズは1〜150バイト(TCPヘッダーとペイロード)です。残りの5%は、150バイトから4096+バイトまで異なります。 以下の設定で、サーバーは最大30 Mbps(全二重)のトラフィックを処理できます。 私のニーズに合わせてOSを調整するためのベストプラクティスをアドバイスしてください。 私/etc/sysctl.congはこのように見えます: kernel.pid_max = 1000000 net.ipv4.ip_local_port_range = 2500 65000 fs.file-max = 1000000 # net.core.netdev_max_backlog=3000 net.ipv4.tcp_sack=0 # net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.somaxconn = 2048 # net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_mem …

4
Linux OOMキラーをデフォルトでオフにしますか?
LinuxのOOMキラーは、さまざまなアプリケーションで大混乱を引き起こしますが、これを改善するためにカーネル開発側で実際に行われていることはあまりないようです。新しいサーバーをセットアップする際のベストプラクティスとして、メモリのオーバーコミットのデフォルトを元に戻す、つまりvm.overcommit_memory=2、特定の用途でオンにする必要があることがわかっていない限り、オフ()にすると良いでしょうか?そして、これらのユースケースは、オーバーコミットをしたいことがわかっている場合はどうなりますか? ボーナスとして、この場合の動作はスワップスペースにvm.overcommit_memory=2依存するvm.overcommit_ratioため、この2つのセットアップ全体が合理的に機能し続けるように、後の2つのサイズを決定するための良い経験則は何でしょうか?
37 linux  memory  kernel  oom 


4
カーネルツリーで 'make oldconfig'を実行するときにデフォルトに自動的に応答する
以前の構成に基づいて新しいカーネルを構築する場合、make oldconfigプロセスを自動化して新しいオプションをデフォルト値に設定する方法はありますか? 編集:つまり、新しいカーネルで.config(from /boot/config-*または/proc/config.gz)を使用すると、make oldconfigプロセスは古いカーネルでは利用できなかったオプションを有効にするかどうかを尋ねます。Y / n / mと答えるか、Enterキーを押してデフォルトを受け入れます。ユーザーの操作なしでデフォルトを自動的に受け入れたい。
36 linux  kernel 

2
ulimit -nと/ proc / sys / fs / file-maxの違いは何ですか?
EC2から起動したばかりの新しいCentOSイメージでは、ulimitのデフォルトは1024のオープンファイルですが、/ proc / sys / fs / file-maxは761,408に設定されており、これら2つの制限がどのように機能するのか疑問に思います一緒に。ulimit -nはユーザーごとのファイル記述子数の制限であり、/ proc / sys / fs / file-maxはシステム全体であると推測していますか?その場合は、同じユーザーとして2回ログインしたとしましょう-各ログインユーザーは、開いているファイルの数に1024の制限がありますか、それとも、ログインした各ユーザー間で合計1024の開いたファイルの制限がありますか?ユーザーに? システムが非常に多くのファイルを開いていない場合、最大ファイル記述子を非常に高い数値に設定すると、パフォーマンスに大きな影響がありますか?
32 linux  bash  kernel  ulimit 

3
SYN_RECV接続の数が少ないにもかかわらず、ログに「可能なSYNフラッディング」
最近、SYNフラッディングのために非常に遅い応答をするApacheサーバーがありました。これの回避策は、tcp_syncookies(net.ipv4.tcp_syncookies=1 in /etc/sysctl.conf)を有効にすることでした。 あなたがより多くの背景が必要な場合、私はこれに関する質問をここに投稿しました。 syncookiesを有効にした後、約60秒ごとに/ var / log / messagesに次のメッセージが表示されるようになりました。 [84440.731929] possible SYN flooding on port 80. Sending cookies. Vinko Vrsalovicは、これがsynバックログがいっぱいになっていることを通知してくれたので、tcp_max_syn_backlogを4096に上げましたsysctl -w net.ipv4.tcp_synack_retries=3。これを行った後、頻度は低下しているようで、メッセージの間隔は約60〜180秒の間で変化しました。 次に、を発行しましたがsysctl -w net.ipv4.tcp_max_syn_backlog=65536、まだログにメッセージが記録されています。 このすべてを通して、(実行watch --interval=5 'netstat -tuna |grep "SYN_RECV"|wc -l'することによって)SYN_RECV状態の接続の数を監視してきましたが、それが約240を超えることはなく、バックログのサイズよりはるかに低くなりません。それでも、約512個のRed Hatサーバーがあります(このサーバーの制限はデフォルトの1024です)。 バックログのサイズを制限する他のtcp設定はありますか、または間違ったツリーを起動していますか?SYN_RECV接続の数はnetstat -tuna、バックログのサイズに相関する必要がありますか? 更新 ここで合法的な接続を処理していると言えば、netstat -tuna|wc -l5000前後です。今日これを調査していて、last.fmの従業員からのこの投稿を見つけました。 また、syncookiesが有効になっている場合、tcp_max_syn_backlogは効果がないことも発見しました(このリンクのとおり) そのため、次のステップとして、sysctl.confで以下を設定します。 net.ipv4.tcp_syn_retries = 3 # default=5 net.ipv4.tcp_synack_retries = 3 …
30 linux  tcp  kernel  flooding 

1
net.core.somaxconnを増やすと違いが生じますか?
net.core.somaxconnパラメーターに関する議論になりました。デフォルトの128を変更しても違いはないと言われました。 私はこれが十分な証拠であると信じていました: 「バックログ引数が/ proc / sys / net / core / somaxconnの値よりも大きい場合、その値に切り捨てられます」http://linux.die.net/man/2/listen しかし、そうではありません。 Gbitネットワーク上にある2台のマシンでこれを証明する方法を知っている人はいますか?最良の方法は、MySQL、LVS、apache2(2.2)、memcachedに対するものです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.