| %M% %I% %E% |
| |
| The set of programs and documentation known as "lmbench" are distributed |
| under the Free Software Foundation's General Public License with the |
| following additional restrictions (which override any conflicting |
| restrictions in the GPL): |
| |
| 1. You may not distribute results in any public forum, in any publication, |
| or in any other way if you have modified the benchmarks. |
| |
| 2. You may not distribute the results for a fee of any kind. This includes |
| web sites which generate revenue from advertising. |
| |
| If you have modifications or enhancements that you wish included in |
| future versions, please mail those to me, Larry McVoy, at lm@bitmover.com. |
| |
| ========================================================================= |
| |
| Rationale for the publication restrictions: |
| |
| In summary: |
| |
| a) LMbench is designed to measure enough of an OS that if you do well in |
| all catagories, you've covered latency and bandwidth in networking, |
| disks, file systems, VM systems, and memory systems. |
| b) Multiple times in the past people have wanted to report partial results. |
| Without exception, they were doing so to show a skewed view of whatever |
| it was they were measuring (for example, one OS fit small processes into |
| segments and used the segment register to switch them, getting good |
| results, but did not want to report large process context switches |
| because those didn't look as good). |
| c) We insist that if you formally report LMbench results, you have to |
| report all of them and make the raw results file easily available. |
| Reporting all of them means in that same publication, a pointer |
| does not count. Formally, in this context, means in a paper, |
| on a web site, etc., but does not mean the exchange of results |
| between OS developers who are tuning a particular subsystem. |
| |
| We have a lot of history with benchmarking and feel strongly that there |
| is little to be gained and a lot to be lost if we allowed the results |
| to be published in isolation, without the complete story being told. |
| |
| There has been a lot of discussion about this, with people not liking this |
| restriction, more or less on the freedom principle as far as I can tell. |
| We're not swayed by that, our position is that we are doing the right |
| thing for the OS community and will stick to our guns on this one. |
| |
| It would be a different matter if there were 3 other competing |
| benchmarking systems out there that did what LMbench does and didn't have |
| the same reporting rules. There aren't and as long as that is the case, |
| I see no reason to change my mind and lots of reasons not to do so. I'm |
| sorry if I'm a pain in the ass on this topic, but I'm doing the right |
| thing for you and the sooner people realize that the sooner we can get on |
| to real work. |
| |
| Operating system design is a largely an art of balancing tradeoffs. |
| In many cases improving one part of the system has negative effects |
| on other parts of the system. The art is choosing which parts to |
| optimize and which to not optimize. Just like in computer architecture, |
| you can optimize the common instructions (RISC) or the uncommon |
| instructions (CISC), but in either case there is usually a cost to |
| pay (in RISC uncommon instructions are more expensive than common |
| instructions, and in CISC common instructions are more expensive |
| than required). The art lies in knowing which operations are |
| important and optmizing those while minimizing the impact on the |
| rest of the system. |
| |
| Since lmbench gives a good overview of many important system features, |
| users may see the performance of the system as a whole, and can |
| see where tradeoffs may have been made. This is the driving force |
| behind the publication restriction: any idiot can optimize certain |
| subsystems while completely destroying overall system performance. |
| If said idiot publishes *only* the numbers relating to the optimized |
| subsystem, then the costs of the optimization are hidden and readers |
| will mistakenly believe that the optimization is a good idea. By |
| including the publication restriction readers would be able to |
| detect that the optimization improved the subsystem performance |
| while damaging the rest of the system performance and would be able |
| to make an informed decision as to the merits of the optimization. |
| |
| Note that these restrictions only apply to *publications*. We |
| intend and encourage lmbench's use during design, development, |
| and tweaking of systems and applications. If you are tuning the |
| linux or BSD TCP stack, then by all means, use the networking |
| benchmarks to evaluate the performance effects of various |
| modifications; Swap results with other developers; use the |
| networking numbers in isolation. The restrictions only kick |
| in when you go to *publish* the results. If you sped up the |
| TCP stack by a factor of 2 and want to publish a paper with the |
| various tweaks or algorithms used to accomplish this goal, then |
| you can publish the networking numbers to show the improvement. |
| However, the paper *must* also include the rest of the standard |
| lmbench numbers to show how your tweaks may (or may not) have |
| impacted the rest of the system. The full set of numbers may |
| be included in an appendix, but they *must* be included in the |
| paper. |
| |
| This helps protect the community from adopting flawed technologies |
| based on incomplete data. It also helps protect the community from |
| misleading marketing which tries to sell systems based on partial |
| (skewed) lmbench performance results. |
| |
| We have seen many cases in the past where partial or misleading |
| benchmark results have caused great harm to the community, and |
| we want to ensure that our benchmark is not used to perpetrate |
| further harm and support false or misleading claims. |
| |
| |