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

UNIXカーネルに関するすべて:開発、構成、コンパイル、設計など

2
rxリング、max_backlog、max_syn_backlogサイズを確認する方法
トラブルシューティングとチューニングの過程で、次のLinuxカーネル設定について考えていることがよくあります。 net.core.netdev_max_backlog net.ipv4.tcp_max_syn_backlog net.core.somaxconn 以外にもfs.file-max、net.ipv4.ip_local_port_range、net.core.rmem_max、net.core.wmem_max、net.ipv4.tcp_rmem、そしてnet.ipv4.tcp_wmem、彼らはあなたが、並行性の高いレベルのボックスをチューニングしているときと混乱に重要ノブのようです。 私の質問:各キューにあるアイテムの数を確認するにはどうすればよいですか?通常、人々はそれらを非常に高く設定しますが、将来の障害を予測し、問題がユーザーに顕著に現れる前に問題をキャッチできるように、これらのキューサイズを記録したいと思います。
41 linux  kernel  networking  tcp 

8
unameはどこから情報を取得しますか?
unameは実際にどこから情報を取得しますか? これは簡単なことだと思います。残念ながら、その情報だけを含むヘッダーは見つかりません。 セイは、誰かがの基本的な出力変更したいuname/をuname -s からLinux(カーネルの名前を変更し、基本的に)何か他のものに。 彼/彼女はそれを適切な方法(つまり、ソースの変更)でどのように実行しますか?
40 linux  kernel  source 

8
Linuxカーネルはマイクロカーネルアーキテクチャと比較してどうですか?
マイクロカーネルアーキテクチャの利点の1つは、システム全体を再起動することなく、ネットワークやファイルシステムなどの重要なサービスを停止/開始できることです。しかし、最近のLinuxカーネル(常にそうなのでしょうか?)がモジュールを使用して同じ効果を達成するオプションを提供していることを考えると、マイクロカーネルの(残りの)利点は何ですか?
38 linux  kernel 

3
カーネル3.7.10以降でUSB自動サスペンドを無効にする方法
私は、カーネルからの私のHTPCを更新しました3.7.10に3.10.7と思わCONFIG_USB_SUSPENDが今カーネルオプションから消えやPMに含まれています。 私が直面している主な問題は、外付けHDDがあり、HTPCをサスペンドしてウェイクアップすると、システムで使用できないことです。HDDが起動します(再びスピンアップするのが聞こえます)が、マウントポイントにアクセスしようとすると、次のエラーが表示されます。 ZOTAC ~ # ls /media ls: reading directory /media: Input/output error そしてdmesgで: [ 253.278260] EXT4-fs warning (device sdb1): __ext4_read_dirblock:908: error reading directory block (ino 2, block 0) 以前のカーネルでは、CONFIG_USB_SUSPEND = Nを設定することで問題が解決しました。HDDは自動的に休止状態を処理し、マウントポイントは常にアクセス可能であったためです。HDDがスリープ状態で、HTPCがHDDのマウントポイントから何かを必要とする場合、HDD自体が問題なく起動して動作します。 今のところ、私は成功せずに次のことを試しました: / sys / bus / usb / devices / usb * / power / controlを「auto」ではなく「on」に手動で変更します。 / sys …

2
「テスト」から「安定」に戻す方法-カーネルのダウングレード
現在、私はたくさんのことを楽しんでいますapt-get-そして悪いことは、それは私自身のせいでした。特定のパッケージをインストールするために、testingパッケージを有効にしました/etc/apt/sources.list。そして、私は自分のシステムがそうだと言ったapt-get dist-upgrade。すべてがうまくいきましたが、今はstable更新されたものに戻ろうとしています-そして失敗します... を実行しようとするとapt-get dist-upgrade、次の情報が表示されます。 The following packages will be REMOVED: linux-image-3.10-3-amd64 The following NEW packages will be installed: libcgi-fast-perl libfcgi-perl libyaml-syck-perl The following packages will be DOWNGRADED: initramfs-tools libdate-manip-perl munin munin-common まあ、それは大丈夫ですが、これをしようとすると、太字のフレンドリーな赤い文字で警告が表示されます: You are running a kernel (version 3.10-3-amd64) and attempting to remove the same version. ... It is highly …
37 debian  kernel 

3
vm.swappinessパラメーターは実際に何を制御しますか?
カーネルのドキュメントごと: This control is used to define how aggressive the kernel will swap memory pages. Higher values will increase aggressiveness, lower values decrease the amount of swap. しかし、これはちょっと曖昧です。パラメーターが最終的に制御するものを正確に把握しようとしています。カーネルがページをどれだけ積極的にスワップアウトしようとするかを調整することは知っていますが、カーネルコードのどのような意思決定プロセスが影響しますか? カーネルがスワップアウトする前にページにアクセスしなければならない期間を調整しますか?その場合、デフォルト値の60は何を表していますか?そして、1の増分/減分によってどれだけ変化しますか(式がいいでしょう)? または、アクセス頻度に基づいてページを入れ替えますか? または、他の何か?
37 linux  kernel  memory  swap 

2
「カーネルリングバッファー」、「ユーザーレベル」、「ログレベル」の概念は何ですか?
私はよく「カーネルリングバッファ」、「ユーザーレベル」、「ログレベル」、および他のいくつかの単語が一緒に表示されるのを見ました。例えば / var / log / dmesgカーネルリングバッファー情報が含まれます。 /var/log/kern.logすべてのログレベルのカーネルのメッセージのみが含まれます /var/log/user.logすべてのユーザーレベルのログに関する情報が含まれています それらはすべてログに関するものですか?それらはどのように関連し、異なっていますか? 「レベル」によって、複数のレベルの階層を想像できますか? 「ユーザーレベル」は「ユーザースペース」に関連していますか? それらは何らかの方法でランレベルまたは保護リングに関連していますか?
35 kernel  logs 


3
ユーザースペースではなくカーネルにLinux NFSサーバーが実装されているのはなぜですか?
Linux NFSサーバーがユーザースペースアプリケーションではなくカーネルに実装されているのはなぜだろうと思っていましたか? ユーザースペースNFSデーモンが存在することは知っていますが、NFSサーバーサービスを提供する標準的な方法ではありません。 NFSサーバーをユーザースペースアプリケーションとして実行することは、カーネルではなくユーザースペースでデーモンを実行することでセキュリティを強化できるため、好ましいアプローチだと思います。また、1つのことを行い、それをうまく実行するというLinuxの一般的な原則にも適合します(そして、デーモンはカーネルの仕事であってはなりません)。 実際、カーネルで実行することで考えることができる唯一の利点は、コンテキストの切り替えによるパフォーマンスの向上です(そして、それは議論の余地のある理由です)。 それで、それがそのままの形で実装されている理由は文書化されていますか?私はグーグルで試しましたが、何も見つかりませんでした。 多くの混乱があるようです。ファイルシステムのマウントについては質問せず、ネットワークファイルシステムのサーバー側の提供について質問しています。非常に明確な違いがあります。ファイルシステムをローカルにマウントするには、カーネル内のファイルシステムをサポートする必要があります(sambaまたはunfs3など)。
33 linux  kernel  nfs 

4
シェルでファイルを実行するとどうなりますか?
だから、私はこれをよく理解していると思ったが、テストを実行して(誰かに反対した会話に応じて)、私の理解に欠陥があることがわかりました... 可能な限り詳細に、シェルでファイルを実行すると正確に何が起こるのでしょうか?私が意味するのは、./somefile some argumentsシェルに入力somefileしてreturnキーを押すと(そしてcwdに存在し、読み取りと実行の許可がありますsomefile)、フードの下で何が起こるのですか? 私が考えた答えでした。 シェルはにsyscallを作成しexec、パスを渡しますsomefile カーネルが調べsomefileではとルックスのマジックナンバーファイルのそれは、プロセッサが処理できる形式であるかどうかを判断します ファイルがプロセッサが実行できる形式であることをマジック番号が示している場合、 新しいプロセスが作成されます(プロセステーブルのエントリを使用) somefile読み取り/メモリにマップされます。スタックが作成され、実行のコードのエントリポイントにジャンプされるsomefileと、ARGVパラメータの配列に初期化(char**、["some","arguments"]) マジック番号がある場合シェバング次いで、exec()上記のように、新しいプロセスを生成するが、実行可能な使用は、インタプリタシェバング(例えばによって参照され/bin/bash又は/bin/perl)とsomefileに渡されSTDIN ファイルに有効なマジックナンバーがない場合、「無効なファイル(不良なマジックナンバー):Execフォーマットエラー」などのエラーが発生します。 ただし、ファイルがプレーンテキストの場合、シェルはコマンドを実行しようとします(入力したかのように)と誰かに言われましたbash somefile。私はこれを信じていませんでしたが、試しただけで、それは正しかったです。ですから、ここで実際に何が起こっているのかについて誤解があり、その仕組みを理解したいと思います。 シェルでファイルを実行するとどうなりますか?(詳細は合理的です...)
32 shell  kernel  exec  shebang 

6
yumは、カーネルバージョンとは異なるkernel-develをインストールします
Fedora 19にVMWareプレーヤーをインストールしようとしています。VMwareプレーヤーがカーネルヘッダーを見つけられないという複数のユーザーの問題に直面しています。kernel-headersとkernel-develパッケージをインストールしyumました/usr/src/kernelsが、表示されるファイルは次のとおりです。 3.12.8-200.fc19.x86_64 ただし、uname -rFedoraカーネルバージョンを実行すると、 3.9.5-301.fc19.x86_64 これは異なるバージョンです。これは、カーネルのパスでVMwareプレーヤーをポイントすると、次のエラーが発生することを意味するようです: C header files matching your running kernel were not found. Refer to your distribution's documentation for installation instructions. 正しいカーネルをどのようにインストールでき/usr/src/kernels/<my-kernel>ますか?また、VMwareを指定しない場合はどこにポイントすればよいですか?
32 fedora  kernel  yum  vmware 

1
デバイスにUSBドライバーを割り当てる方法
この質問は2つあります。 まず、USBデバイスからドライバーを手動でデタッチし、別のデバイスをアタッチするにはどうすればよいですか?たとえば、接続時に自動的にusbストレージドライバーを使用するデバイスがあります。 usbview出力 Vendor Id: xxxx Product Id: xxxx ... Number of Interfaces: 2 Interface Number: 0 Name: usb-storage Number of Endpoints: 2 ... Interface Number: 1 Name: (none) Number of Endpoints: 2 ... usb-storageドライバーを使用したくないので、アプリケーションでlibusbライブラリを使用してusb-storageドライバーをデタッチし、インターフェイスを要求します。その後、USBデバイスとホストLinuxシステムで実行されているアプリケーションとの間でデータを送受信できます。 アプリケーションの外部でドライバーを手動でデタッチするにはどうすればよいですか? 次に、デバイスプラグインにアタッチするドライバーを自動的に割り当てる方法を教えてください。現在、デバイスのアクセス許可を自動的に設定するudevルールがセットアップされています。 SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666" udevルールを使用して、USBデバイスの特定のインターフェイスにドライバーを割り当てることはできますか?たとえば、usb-storageの代わりにインターフェイス0でusbnetモジュールを自動的に使用する場合、udevで可能ですか?

12
応答性を高めるためにLinuxデスクトップを調整するにはどうすればよいですか?
物理メモリがなくなるまでLinuxは正常に動作するという経験があります。スワップ領域が使用されるとすぐに、パフォーマンスが著しく低下し、GUIが応答しなくなります。 この問題は特定のディストリビューションやデスクトップに限定されるものではありません。私はいくつか試してみました(そして問題は残っています)。 これについて何ができますか?
30 linux  kernel  performance  io  swap 

3
Linux Kernelプロジェクトは初期のバグをどのように追跡しましたか?
私たちは皆、Linus TorvaldsがBitkeeperの問題のためにGitを作成したことを知っています。(少なくとも私には)知られていないのは、それまでに問題/チケット/バグがどのように追跡されていたのですか?試しましたが、何も面白くありませんでした。私がこのテーマについて議論できたのは、LinusがBugzillaの使用に関する懸念を共有したこのディスカッションだけでした。 憶測: -人々が最初の段階でバグを追跡する最も簡単な方法は、チケットを独自のブランチに入れることでしたが、すぐにそれが良いバグを追い越すノイズでスケーリングされなかったと確信しています。 Bugzillaを見て使用しましたが、正しい「キーワード」がわからない場合は困惑することがあります。注:問題の追跡に使用された初期の時期(1991〜1995年)に特に興味があります。 「Kernel SCM saga」と「Trivia:いつgit self-host?」という2つのスレッドを見ましたが、これらはいずれも初期のカーネルのバグ追跡について言及していませんでした。 私はあちこち検索しましたが、1991年から1992年にそこにあったFOSSバグ追跡ソフトウェアを入手できませんでした。Bugzilla、Request-tracker、およびその他のユーザーはかなり遅れて登場したため、外に出ているようです。 主な質問 当時、Linus、サブシステム管理者、およびユーザーはどのようにしてバグを報告および追跡しましたか? 彼らはいくつかのバグ追跡ソフトウェアを使用し、バグのブランチを作成し、その中のバグに関する質問とディスカッションを手動でコミットしました(それを行うには費用がかかり、苦痛になります)。 その後、Bugzillaが登場し(1998年の最初のリリース)、それがその後バグを報告する主要な方法であるようです。 昔のことをより明確に把握できることを楽しみにしています。
29 linux  kernel  git  history 

2
シグナルがキャッチされたときのシステムコールの中断
read()とのwrite()呼び出しのマニュアルページを読むと、これらの呼び出しは、ブロックする必要があるかどうかに関係なく、シグナルによって中断されるようです。 特に、仮定 プロセスが何らかのシグナルのハンドラーを確立します。 デバイスが設定されてO_NONBLOCK いない状態で開かれている(つまり、ブロッキングモードで動作している) その後、プロセスread()はデバイスから読み取るシステムコールを行い、その結果、カーネル空間でカーネル制御パスを実行します。 read()プロセスがカーネル空間で実行している間、ハンドラーが以前にインストールされたシグナルがそのプロセスに配信され、そのシグナルハンドラーが呼び出されます。 SUSv3の「System Interfaces volume(XSH)」のマニュアルページと適切なセクションを読むと、次のことがわかります。 私。a read()がデータを読み込む前に信号によって中断された場合(つまり、データが利用できなかったためブロックしなければならなかった場合)、errno[EINTR]に設定された-1を返します。 ii。a read()がデータを正常に読み取った後(つまり、要求の処理をすぐに開始できた)にシグナルによって中断された場合、読み取られたバイト数を返します。 質問A): どちらの場合(ブロック/ブロックなし)でも、信号の配信と処理は完全に透過的ではないと仮定するのは正しいread()ですか? ケースi。ブロッキングread()は通常、プロセスをTASK_INTERRUPTIBLE状態にするため、シグナルが配信されるとカーネルがプロセスをTASK_RUNNING状態にするため、理解できるようです。 しかし、read()ブロックする必要がなく(ケースii。)、カーネル空間でリクエストを処理している場合、シグナルの到着とその処理は、ハードウェアの到着と適切な処理と同様に透過的であると考えていました。割り込みになります。特に、シグナルの配信時に、プロセスは一時的にユーザーモードになり、そのシグナルハンドラーを実行して、最終的に戻り、中断されたread()(カーネルスペースで)処理を終了しread()て、完了までの経過後、プロセスはread()(ユーザー空間での)呼び出しの直後のポイントに戻り、結果として利用可能なすべてのバイトが読み込まれます。 しかし、ii。はread()、データがすぐに利用可能であるため、が中断されていることを暗示しているように見えますが、(すべてではなく)一部のデータのみを返します。 これにより、2番目の(そして最後の)質問に導かれます。 質問B): A)での私の仮定が正しい場合、read()要求を満たすために利用可能なデータがあるためブロックする必要はないのに、なぜ中断されるのですか?言い換えると、なぜread()シグナルハンドラーを実行した後に再開されず、最終的にすべての利用可能なデータ(結局利用可能だった)が返されることになりますか?

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