我们有一些软件依赖于另一个(非常常用的)应用程序的某些行为,这些应用程序现在已经改变,使我们当前的实现可行,但不是最佳.
我们认为这种变化可能会影响其他一些应用,特别是在性能监控领域,我们已经找到了一种解决方案,我们相信这将改善一系列其他潜在问题.
不幸的是,所述解决方案是内核更改(相对简单但影响很大,如果我们填充它)并且我们没有提交内核补丁进行审核的经验.
有没有人在SO上提交了一个补丁(虽然我很欣赏所有的答案,我怀疑最好的答案会来自那些已经完成整个过程的人,甚至没有成功)?你有没有接受过(Alan Cox等人在SO上有什么机会)?
正确的流程是什么?我无意向Linus发送一封电子邮件,因为我知道他有一群保护者,你应该在他到达之前经过这些保护.我如何找出谁负责内核的特定部分.
我可能会过于乐观地认为某个内核世界从未听说过可以做出贡献,但我有兴趣了解一下.
编辑更多细节:
这个更改实际上并不是针对性能错误,而是对进程终止时编写的进程记帐条目(当前)的改进(在我看来).
Websphere App Server(啊,IBM,祝福他们的小心灵)改变了它的作用; JVM过去经常退出以便他们的条目被写入,我们可以使用它进行退款.现在它让JVM闲置数月,这意味着数据无法及时获得,除非我们定期强制关闭WAS.不知怎的,我不认为IBM软件集团会为我们修复他们的软件:-).无论如何,我相信它对于其他长期存在的过程可能是一个有用的特性.
当前进程退出时会写入类型3进程记帐记录,我们正在查看的是一种在进程仍然处于活动状态时定期写入N类记录的机制,给出自上次写入以来的数据(如果这是第一次).退款或性能监控应用程序可以选择使用类型3记录(完全不变)或临时类型N记录.我们目前的解决方法是监控特定流程的/ proc/PID/stat,但这是一个可怕的问题,因为它与实际流程会计不能很好地集成.
它不需要经常(我们会对24小时感到满意),但可能会产生性能影响,因为目前仅在流程exit()上完成的工作必须偶尔在流程上下文切换时完成.Linus等人可能不喜欢这个想法,因为它可能是代码的高影响区域(甚至检查自上次写入以来是否已经24小时对他们来说可能太慢).
不过,感谢到目前为止的所有答案,我会看到我如何去.给我几天,我会接受最好的答案.
在其他任何事情之前:专注于性能错误报告,并且正确(使用可重复的基准测试)将至少帮助您让人们去解决问题.在测试之后再提交补丁,但要注意你的优秀补丁可能使用错误的方法,并且他们可能会写一个更好的补丁.或者说它可能很棒,但可能需要修复才能被接受,甚至可能发生在优步人身上.并且不要认为私下给某人发电子邮件,而是参考LKML或相应的子系统ML.
在与内核开发人员联系之前,我建议您仔细阅读所有其他答案和所有适用的材料; 并阅读SubmittingPatches的参考书目.如果你做错了,他们可能会很苛刻.核心新闻IRC聊天是你开始的好地方,因为它们肯定是热情好客,即使有时环境可能太新手了(不确定,我也没有那么多).
我可能会过于乐观地认为某个内核世界从未听说过可以做出贡献,但我有兴趣了解一下.
这不是过于乐观; 至少不是这样.从你的摘要(因为我不知道你的技能),更不可能的是你的补丁将被接受而不做任何修改,或者它是根据正确的技能编写的.但实际上,如果您的补丁适用于较小的社区,则可能会更容易.
从具有一定经验的人(即我)开始,在考虑补丁提交之前,描述问题及其影响其他应用程序的原因.诸如"这可以提高我们的性能"之类的考虑因素,特别是如果您(作为供应商)有资格(模糊地),将不会对内核开发人员有吸引力.
特别是,省略这样的陈述:
使我们当前的实现可行,但不是最佳的.
因为这会给大多数读者立即购买"修改你的代码"的建议.
如果现有应用程序(不是您编写的)的性能受到影响,则会有所不同.例如,一旦Linus立即注意修复内核性能以搞砸代码,因为该代码是make的一部分,即使他为他编写的代码以及他不需要做的事情感到自豪确切的修复.即,你需要一个每个人都关心的应用程序,或者一个没有缺点的解决方案.所以,像:
来自另一个(非常常用的)应用程序的行为
只要您对该应用程序的使用不被认为是不合理的,那就很好.
最后,如果您参考源代码,他们可能会要求查看感兴趣的部分 - 如果存在代码,请考虑许可问题,如果您想快速回答,请事先解决其中的任何问题.
顺便说一下,这是我在那里经历的部分原因:https: //www.ohloh.net/accounts/Blaisorblade
如果您愿意,可以联系我直接帮助您提交建议的邮件,并在讨论中与我联系.我很忙,但我可能会找到更多时间:-).
那么,您可以尝试在Linux内核源代码树中阅读Documentation/SubmittingPatches.