Linuxカーネル開発者は、Linuxカーネルで改善が必要なバグやその他の領域をどのように見つけますか?

Linuxカーネル開発者は、Linuxカーネルで改善が必要なバグやその他の領域をどのように見つけますか?

これは余談かもしれません。その場合はコメントを残していただければ削除いたします。

私はカーネル開発者になることを試みていますが、メーリングリストの一部を読んでいる間、Linuxカーネル開発者がLinuxカーネルで改善点を見つけることができる場所がどこにあるのか疑問に思いました。カーネルのバグトラッカーを見ると、実際にはカーネルのバグがあまり多くなく、パッチの多くはカーネル内部の最適化または改善に関連しています。これは、開発者がLinuxカーネルで改善すべき点をどのように把握するかについての質問につながります。

もう一度申し上げますが、トピックから抜け出した内容ならコメントを残していただければ削除いたします。

答え1

他の回答(質問がトピックから逸​​脱する可能性があるか、回答がWiki回答に変換される必要があることを示唆している可能性があります)に追加されます。

  • ディストリビューションには良いカーネル開発者がいることが多いですが、それにもかかわらず、ほとんどのディストリビューションにはバグを選別して適切な人に伝えることができる知識が豊富な人がいます。ただユニバーサルディストリビューションだとは思わないでください。おそらく、カーネルを使用するルーティング用のopenwrtなどの特別なディストリビューションがあります。違うまたはすべての仮想化イメージ

  • 多くの開発者が会社から給与を受け取ります。リリースビルドの場合、開発者は問題(バグを暗示する可能性がある)をさらに確認できます。ハードウェアメーカー(デバイスとアーキテクチャ)の場合は、追加のストレステストを実行できます。時には開発者が話し合い、バグが発生することがあります。 (部分ごとに仮定が異なる場合があります。)

  • スタック:あなたはたくさんあります標準ライブラリカーネルシステムコールを直接使用するプログラム。彼らはおそらく広範なテストを行ったでしょう。

  • カーネルにはさまざまなテストがあり、その多くはカーネルが開発(およびリリース)されるにつれて定期的に実行されます。

  • 開発とデバッグ:コードを変更すると(またはコードを表示するだけで)、カーネルの関連していない部分でより重要なバグが明らかになる可能性があります。注:また、コードを見るだけでも(たぶん特定の部分を改善したいので、他の部分がコードをどのように使用するかを理解する必要があるかもしれません)。

どのように多くのさまざまな機械や用途があるかを過小評価しないでください。したがって、常に新しいバグが表示されます。注:開発者の場合は、次の内容を見ることができます。質問バグになる前に修正されたバグか新しいバグかを評価することもできます。

注:バグレポートを送信すると、両方のバグが修正されました。 1つはシステム管理者(回帰)、2番目はLinus Torvalds(上位レベル)です。最初のエラーは、一般的なコードが弱いことを示唆しているからです。

確認する:https://kernelnewbies.org/おそらくサブシステム固有のメーリングリストがあるので、尋ねることができます。新しい開発者を喜んで助けたい人がいるでしょう。

答え2

エラーを見つける方法は(少なくとも)3つあります。

  • このプログラムを使用している人は、このプログラムが異常に動作することがわかります。これは彼らが望む機能であるかもしれませんし、欠陥(例えばバグ)かもしれません。
  • コードを直接見てみると、コードの宣伝された動作(注釈、文書、または同じコードの他の部分)と実際の機能との間の不一致が原因で欠陥が発生する可能性があります。または、次のような偶発的な誤用かもしれません。配列マークが範囲外です。これは機械的手段(コンパイラ検査など)や人の目で行うことができます。
  • 外部プログラム(しばしばパージャーと呼ばれる)はコードをランダムに攻撃し、コードが不規則に動作するようにすることができます。

カーネルのバグがあまりないので、見つかった後すぐに修正されるので、カーネルのバグはあまり表示されません。

機能要求とバグの違いは、通常、新しい動作に新しいコードを追加することに関連していますが、バグは既存のコードのバグであるということです。最適化はバグ修正でも新機能でもかまいません。

新しいカーネル開発者としての最適化は非常に難しいかもしれません。

(すでに提案されているように)最善の方法は、おそらく現在サポートされていないデバイスまたは適切にサポートされていないデバイスを見つけて、そのデバイスのドライバを作成することです。

しかし、変更の必要性を見つけることなく、既存のカーネルコードを読むこと自体がカーネル開発に入るための良い方法かもしれません。最適化について議論し、新しい最適化がどのように機能するかを理解することも重要です。

答え3

bugzilla.kernel.org と LKML は、修正や改善が必要な質問や事項が無限に注がれるソースです。

とてもスマートな人もいます。彼らはコードを読み、より効率的な方法で別の方法で実行できることに気づいたので、私たちはパフォーマンスを向上させました。

答え4

これは、アクティブなカーネル開発者ではなく、Linuxユーザースペース開発者としての私の観点から来ていますが、何かを達成する方法を見つけるとき、まだメインラインカーネルにマージされていないパッチセットがあることがわかります。

例えばカーネルのフルジョブ分離モードCONFIG_TASK_ISOLATION特定のユースケースに役立つと思いますが、私が知っている限り、まだメインラインカーネルでは検索されていません。https://github.com/torvalds/linux再生回数がありません。

これらのパッチセットをメインラインカーネルに統合しようとすると、カーネル開発者の出発点になる可能性があります。

関連情報