xref: /OK3568_Linux_fs/yocto/meta-openembedded/meta-oe/licenses/GPL-2.0-with-lmbench-restriction (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun%M% %I% %E%
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunThe set of programs and documentation known as "lmbench" are distributed
4*4882a593Smuzhiyununder the Free Software Foundation's General Public License with the
5*4882a593Smuzhiyunfollowing additional restrictions (which override any conflicting
6*4882a593Smuzhiyunrestrictions in the GPL):
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun1. You may not distribute results in any public forum, in any publication,
9*4882a593Smuzhiyun   or in any other way if you have modified the benchmarks.
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun2. You may not distribute the results for a fee of any kind.  This includes
12*4882a593Smuzhiyun   web sites which generate revenue from advertising.
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunIf you have modifications or enhancements that you wish included in
15*4882a593Smuzhiyunfuture versions, please mail those to me, Larry McVoy, at lm@bitmover.com.
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun=========================================================================
18*4882a593Smuzhiyun
19*4882a593SmuzhiyunRationale for the publication restrictions:
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunIn summary:
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun    a) LMbench is designed to measure enough of an OS that if you do well in
24*4882a593Smuzhiyun       all catagories, you've covered latency and bandwidth in networking,
25*4882a593Smuzhiyun       disks, file systems, VM systems, and memory systems.
26*4882a593Smuzhiyun    b) Multiple times in the past people have wanted to report partial results.
27*4882a593Smuzhiyun       Without exception, they were doing so to show a skewed view of whatever
28*4882a593Smuzhiyun       it was they were measuring (for example, one OS fit small processes into
29*4882a593Smuzhiyun       segments and used the segment register to switch them, getting good
30*4882a593Smuzhiyun       results, but did not want to report large process context switches
31*4882a593Smuzhiyun       because those didn't look as good).
32*4882a593Smuzhiyun    c) We insist that if you formally report LMbench results, you have to
33*4882a593Smuzhiyun       report all of them and make the raw results file easily available.
34*4882a593Smuzhiyun       Reporting all of them means in that same publication, a pointer
35*4882a593Smuzhiyun       does not count.  Formally, in this context, means in a paper,
36*4882a593Smuzhiyun       on a web site, etc., but does not mean the exchange of results
37*4882a593Smuzhiyun       between OS developers who are tuning a particular subsystem.
38*4882a593Smuzhiyun
39*4882a593SmuzhiyunWe have a lot of history with benchmarking and feel strongly that there
40*4882a593Smuzhiyunis little to be gained and a lot to be lost if we allowed the results
41*4882a593Smuzhiyunto be published in isolation, without the complete story being told.
42*4882a593Smuzhiyun
43*4882a593SmuzhiyunThere has been a lot of discussion about this, with people not liking this
44*4882a593Smuzhiyunrestriction, more or less on the freedom principle as far as I can tell.
45*4882a593SmuzhiyunWe're not swayed by that, our position is that we are doing the right
46*4882a593Smuzhiyunthing for the OS community and will stick to our guns on this one.
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunIt would be a different matter if there were 3 other competing
49*4882a593Smuzhiyunbenchmarking systems out there that did what LMbench does and didn't have
50*4882a593Smuzhiyunthe same reporting rules.  There aren't and as long as that is the case,
51*4882a593SmuzhiyunI see no reason to change my mind and lots of reasons not to do so.  I'm
52*4882a593Smuzhiyunsorry if I'm a pain in the ass on this topic, but I'm doing the right
53*4882a593Smuzhiyunthing for you and the sooner people realize that the sooner we can get on
54*4882a593Smuzhiyunto real work.
55*4882a593Smuzhiyun
56*4882a593SmuzhiyunOperating system design is a largely an art of balancing tradeoffs.
57*4882a593SmuzhiyunIn many cases improving one part of the system has negative effects
58*4882a593Smuzhiyunon other parts of the system.  The art is choosing which parts to
59*4882a593Smuzhiyunoptimize and which to not optimize.  Just like in computer architecture,
60*4882a593Smuzhiyunyou can optimize the common instructions (RISC) or the uncommon
61*4882a593Smuzhiyuninstructions (CISC), but in either case there is usually a cost to
62*4882a593Smuzhiyunpay (in RISC uncommon instructions are more expensive than common
63*4882a593Smuzhiyuninstructions, and in CISC common instructions are more expensive
64*4882a593Smuzhiyunthan required).  The art lies in knowing which operations are
65*4882a593Smuzhiyunimportant and optmizing those while minimizing the impact on the
66*4882a593Smuzhiyunrest of the system.
67*4882a593Smuzhiyun
68*4882a593SmuzhiyunSince lmbench gives a good overview of many important system features,
69*4882a593Smuzhiyunusers may see the performance of the system as a whole, and can
70*4882a593Smuzhiyunsee where tradeoffs may have been made.  This is the driving force
71*4882a593Smuzhiyunbehind the publication restriction: any idiot can optimize certain
72*4882a593Smuzhiyunsubsystems while completely destroying overall system performance.
73*4882a593SmuzhiyunIf said idiot publishes *only* the numbers relating to the optimized
74*4882a593Smuzhiyunsubsystem, then the costs of the optimization are hidden and readers
75*4882a593Smuzhiyunwill mistakenly believe that the optimization is a good idea.  By
76*4882a593Smuzhiyunincluding the publication restriction readers would be able to
77*4882a593Smuzhiyundetect that the optimization improved the subsystem performance
78*4882a593Smuzhiyunwhile damaging the rest of the system performance and would be able
79*4882a593Smuzhiyunto make an informed decision as to the merits of the optimization.
80*4882a593Smuzhiyun
81*4882a593SmuzhiyunNote that these restrictions only apply to *publications*.  We
82*4882a593Smuzhiyunintend and encourage lmbench's use during design, development,
83*4882a593Smuzhiyunand tweaking of systems and applications.  If you are tuning the
84*4882a593Smuzhiyunlinux or BSD TCP stack, then by all means, use the networking
85*4882a593Smuzhiyunbenchmarks to evaluate the performance effects of various
86*4882a593Smuzhiyunmodifications; Swap results with other developers; use the
87*4882a593Smuzhiyunnetworking numbers in isolation.  The restrictions only kick
88*4882a593Smuzhiyunin when you go to *publish* the results.  If you sped up the
89*4882a593SmuzhiyunTCP stack by a factor of 2 and want to publish a paper with the
90*4882a593Smuzhiyunvarious tweaks or algorithms used to accomplish this goal, then
91*4882a593Smuzhiyunyou can publish the networking numbers to show the improvement.
92*4882a593SmuzhiyunHowever, the paper *must* also include the rest of the standard
93*4882a593Smuzhiyunlmbench numbers to show how your tweaks may (or may not) have
94*4882a593Smuzhiyunimpacted the rest of the system.  The full set of numbers may
95*4882a593Smuzhiyunbe included in an appendix, but they *must* be included in the
96*4882a593Smuzhiyunpaper.
97*4882a593Smuzhiyun
98*4882a593SmuzhiyunThis helps protect the community from adopting flawed technologies
99*4882a593Smuzhiyunbased on incomplete data.  It also helps protect the community from
100*4882a593Smuzhiyunmisleading marketing which tries to sell systems based on partial
101*4882a593Smuzhiyun(skewed) lmbench performance results.
102*4882a593Smuzhiyun
103*4882a593SmuzhiyunWe have seen many cases in the past where partial or misleading
104*4882a593Smuzhiyunbenchmark results have caused great harm to the community, and
105*4882a593Smuzhiyunwe want to ensure that our benchmark is not used to perpetrate
106*4882a593Smuzhiyunfurther harm and support false or misleading claims.
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun
109