{"SPDXID": "SPDXRef-DOCUMENT", "creationInfo": {"comment": "This document was created by analyzing recipe files during the build.", "created": "2025-11-11T01:00:35Z", "creators": ["Tool: OpenEmbedded Core create-spdx.bbclass", "Organization: OpenEmbedded ()", "Person: N/A ()"], "licenseListVersion": "3.14"}, "dataLicense": "CC0-1.0", "documentNamespace": "http://spdx.org/spdxdocs/recipe-lmbench-8d99d37d-5463-514e-9796-7596704f8372", "externalDocumentRefs": [{"checksum": {"algorithm": "SHA1", "checksumValue": "ed28692970a9a7e2f2db959433155bee399f41b4"}, "externalDocumentId": "DocumentRef-dependency-recipe-autoconf-native", "spdxDocument": "http://spdx.org/spdxdocs/recipe-autoconf-native-124e4a29-7bee-575a-9a44-2226fa6af9c9"}, {"checksum": {"algorithm": "SHA1", "checksumValue": "d469cc95ccab86c6dec9e0299ad118dd11ffb27a"}, "externalDocumentId": "DocumentRef-dependency-recipe-automake-native", "spdxDocument": "http://spdx.org/spdxdocs/recipe-automake-native-e3046935-37af-5c2e-b371-e883e5ef1216"}, {"checksum": {"algorithm": "SHA1", "checksumValue": "4b7f5865d8e834188b7294e269afbedc2bf999ae"}, "externalDocumentId": "DocumentRef-dependency-recipe-gcc-cross-aarch64", "spdxDocument": "http://spdx.org/spdxdocs/recipe-gcc-cross-aarch64-e05122e2-842a-5b45-a068-7a450933ae13"}, {"checksum": {"algorithm": "SHA1", "checksumValue": "a35935958d23999d186c099c5957e1eade02e2fc"}, "externalDocumentId": "DocumentRef-dependency-recipe-gcc-runtime", "spdxDocument": "http://spdx.org/spdxdocs/recipe-gcc-runtime-a8177036-816d-5f00-a030-969647302050"}, {"checksum": {"algorithm": "SHA1", "checksumValue": "69ddf125aaa4a50b4dda8f21ad352b25b6557204"}, "externalDocumentId": "DocumentRef-dependency-recipe-glibc", "spdxDocument": "http://spdx.org/spdxdocs/recipe-glibc-8ec5f1d4-204b-530d-8854-79bbb314d6d7"}, {"checksum": {"algorithm": "SHA1", "checksumValue": "887808a09e473375224d3967d74002c2a8c485f9"}, "externalDocumentId": "DocumentRef-dependency-recipe-libtirpc", "spdxDocument": "http://spdx.org/spdxdocs/recipe-libtirpc-03b2a863-bb17-5e82-a092-25d189a10a96"}, {"checksum": {"algorithm": "SHA1", "checksumValue": "9b0dd33774f6855003984fafd8cf25c9e8b4dfac"}, "externalDocumentId": "DocumentRef-dependency-recipe-libtool-cross", "spdxDocument": "http://spdx.org/spdxdocs/recipe-libtool-cross-07500b21-b619-56d3-838e-16ca401a612f"}, {"checksum": {"algorithm": "SHA1", "checksumValue": "dce1fdcd604285464184044415090d947dad6260"}, "externalDocumentId": "DocumentRef-dependency-recipe-libtool-native", "spdxDocument": "http://spdx.org/spdxdocs/recipe-libtool-native-af5e5210-5bed-5317-878d-15206849f191"}, {"checksum": {"algorithm": "SHA1", "checksumValue": "4e13e4c3fba75730a6c0e18e20b9b9c24c241645"}, "externalDocumentId": "DocumentRef-dependency-recipe-opkg-utils", "spdxDocument": "http://spdx.org/spdxdocs/recipe-opkg-utils-f3c24e09-f6ff-5f5c-ab93-a37218f4e1a7"}], "hasExtractedLicensingInfos": [{"extractedText": "%M% %I% %E%\n\nThe set of programs and documentation known as \"lmbench\" are distributed\nunder the Free Software Foundation's General Public License with the\nfollowing additional restrictions (which override any conflicting\nrestrictions in the GPL):\n\n1. You may not distribute results in any public forum, in any publication,\n   or in any other way if you have modified the benchmarks.  \n\n2. You may not distribute the results for a fee of any kind.  This includes\n   web sites which generate revenue from advertising.\n\nIf you have modifications or enhancements that you wish included in\nfuture versions, please mail those to me, Larry McVoy, at lm@bitmover.com.\n\n=========================================================================\n\nRationale for the publication restrictions:\n\nIn summary:\n\n    a) LMbench is designed to measure enough of an OS that if you do well in\n       all catagories, you've covered latency and bandwidth in networking,\n       disks, file systems, VM systems, and memory systems.\n    b) Multiple times in the past people have wanted to report partial results.\n       Without exception, they were doing so to show a skewed view of whatever\n       it was they were measuring (for example, one OS fit small processes into\n       segments and used the segment register to switch them, getting good \n       results, but did not want to report large process context switches \n       because those didn't look as good).\n    c) We insist that if you formally report LMbench results, you have to\n       report all of them and make the raw results file easily available.\n       Reporting all of them means in that same publication, a pointer\n       does not count.  Formally, in this context, means in a paper,\n       on a web site, etc., but does not mean the exchange of results\n       between OS developers who are tuning a particular subsystem.\n\nWe have a lot of history with benchmarking and feel strongly that there\nis little to be gained and a lot to be lost if we allowed the results\nto be published in isolation, without the complete story being told.\n\nThere has been a lot of discussion about this, with people not liking this\nrestriction, more or less on the freedom principle as far as I can tell.\nWe're not swayed by that, our position is that we are doing the right\nthing for the OS community and will stick to our guns on this one.\n\nIt would be a different matter if there were 3 other competing\nbenchmarking systems out there that did what LMbench does and didn't have\nthe same reporting rules.  There aren't and as long as that is the case,\nI see no reason to change my mind and lots of reasons not to do so.  I'm\nsorry if I'm a pain in the ass on this topic, but I'm doing the right\nthing for you and the sooner people realize that the sooner we can get on\nto real work.\n\nOperating system design is a largely an art of balancing tradeoffs.\nIn many cases improving one part of the system has negative effects\non other parts of the system.  The art is choosing which parts to\noptimize and which to not optimize.  Just like in computer architecture,\nyou can optimize the common instructions (RISC) or the uncommon\ninstructions (CISC), but in either case there is usually a cost to\npay (in RISC uncommon instructions are more expensive than common\ninstructions, and in CISC common instructions are more expensive\nthan required).  The art lies in knowing which operations are \nimportant and optmizing those while minimizing the impact on the\nrest of the system.  \n\nSince lmbench gives a good overview of many important system features,\nusers may see the performance of the system as a whole, and can\nsee where tradeoffs may have been made.  This is the driving force\nbehind the publication restriction: any idiot can optimize certain\nsubsystems while completely destroying overall system performance.\nIf said idiot publishes *only* the numbers relating to the optimized\nsubsystem, then the costs of the optimization are hidden and readers\nwill mistakenly believe that the optimization is a good idea.  By\nincluding the publication restriction readers would be able to\ndetect that the optimization improved the subsystem performance\nwhile damaging the rest of the system performance and would be able\nto make an informed decision as to the merits of the optimization.\n\nNote that these restrictions only apply to *publications*.  We\nintend and encourage lmbench's use during design, development,\nand tweaking of systems and applications.  If you are tuning the\nlinux or BSD TCP stack, then by all means, use the networking\nbenchmarks to evaluate the performance effects of various \nmodifications; Swap results with other developers; use the\nnetworking numbers in isolation.  The restrictions only kick\nin when you go to *publish* the results.  If you sped up the\nTCP stack by a factor of 2 and want to publish a paper with the\nvarious tweaks or algorithms used to accomplish this goal, then\nyou can publish the networking numbers to show the improvement.\nHowever, the paper *must* also include the rest of the standard\nlmbench numbers to show how your tweaks may (or may not) have\nimpacted the rest of the system.  The full set of numbers may\nbe included in an appendix, but they *must* be included in the\npaper.\n\nThis helps protect the community from adopting flawed technologies\nbased on incomplete data.  It also helps protect the community from\nmisleading marketing which tries to sell systems based on partial\n(skewed) lmbench performance results.  \n\nWe have seen many cases in the past where partial or misleading\nbenchmark results have caused great harm to the community, and\nwe want to ensure that our benchmark is not used to perpetrate\nfurther harm and support false or misleading claims.\n\n\n", "licenseId": "LicenseRef-GPL-2.0-with-lmbench-restriction", "name": "GPL-2.0-with-lmbench-restriction"}], "name": "recipe-lmbench", "packages": [{"SPDXID": "SPDXRef-Recipe-lmbench", "copyrightText": "NOASSERTION", "description": "Tools for performance analysis.", "downloadLocation": "NOASSERTION", "externalRefs": [{"referenceCategory": "SECURITY", "referenceLocator": "cpe:2.3:*:*:lmbench:3.0-a9:*:*:*:*:*:*:*", "referenceType": "http://spdx.org/rdf/references/cpe23Type"}], "homepage": "http://lmbench.sourceforge.net/", "licenseConcluded": "NOASSERTION", "licenseDeclared": "GPL-2.0-only AND LicenseRef-GPL-2.0-with-lmbench-restriction", "licenseInfoFromFiles": ["NOASSERTION"], "name": "lmbench", "summary": "Tools for performance analysis", "supplier": "Organization: OpenEmbedded ()", "versionInfo": "3.0-a9"}, {"SPDXID": "SPDXRef-Download-lmbench-1", "checksums": [{"algorithm": "MD5", "checksumValue": "b3351a3294db66a72e2864a199d37cbf"}, {"algorithm": "SHA256", "checksumValue": "cbd5777d15f44eab7666dcac418054c3c09df99826961a397d9acf43d8a2a551"}], "copyrightText": "NOASSERTION", "downloadLocation": "https://downloads.sourceforge.net/lmbench/lmbench-3.0-a9.tgz", "licenseConcluded": "NOASSERTION", "licenseDeclared": "NOASSERTION", "licenseInfoFromFiles": ["NOASSERTION"], "name": "lmbench-source-1", "supplier": "NOASSERTION"}], "relationships": [{"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "DESCRIBES", "spdxElementId": "SPDXRef-DOCUMENT"}, {"relatedSpdxElement": "SPDXRef-Download-lmbench-1", "relationshipType": "DESCRIBES", "spdxElementId": "SPDXRef-DOCUMENT"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "SPDXRef-Download-lmbench-1"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-autoconf-native:SPDXRef-Recipe-autoconf-native"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-automake-native:SPDXRef-Recipe-automake-native"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-gcc-cross-aarch64:SPDXRef-Recipe-gcc-cross-aarch64"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-gcc-runtime:SPDXRef-Recipe-gcc-runtime"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-glibc:SPDXRef-Recipe-glibc"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-libtirpc:SPDXRef-Recipe-libtirpc"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-libtool-cross:SPDXRef-Recipe-libtool-cross"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-libtool-native:SPDXRef-Recipe-libtool-native"}, {"relatedSpdxElement": "SPDXRef-Recipe-lmbench", "relationshipType": "BUILD_DEPENDENCY_OF", "spdxElementId": "DocumentRef-dependency-recipe-opkg-utils:SPDXRef-Recipe-opkg-utils"}], "spdxVersion": "SPDX-2.2"}