4. DISCUSSION
In the previous section, we have outlined our proposed tool that will be part of a greater framework to assist managing and verifying the variability in the Linux kernel. We hope that our tool will be adopted by the various Linux communities involved with variability management and issues that arise from it.
Especially targeted for driver developers, our framework would be able to show what configuration derived variability is actually used by a device driver. This would highlight the variability points introduced for example by driver developers, but also indicate interaction with other features that might have not been considered (yet) during the implementation of the driver. Depending on these additional variation points, this can indicate that additional test cases need to be considered.
Similarly, subsystem maintainers could use our tool during reviews and integrations. While inspecting the Linux Guidelines for patch submission and review 2 it turns out that 9 out of 24 points deal with K config related issues. These issues are very hard to test and review; our framework can assist here with visualizing and verifying the additional variation points.
While we are convinced that our framework will be useful for kernel maintainers, we need to consider if our approach scales with the amount of variability in Linux. With Linux, we are facing a variant model of about 8000 features. It is well known that the size of BDDs is very sensitive to the number and order of its variables, which may lead to insufficient memory problems. However, our preliminary results clearly show that the variability is not uniformly distributed across the Linux source code, but variability hot spots can be identified easily. Therefore, we will work on a per compilation-unit basis in order to keep the BDDs reasonably sized.
A first analysis with a self written tool based on sparse [10], a framework for static analysis written for the Linux kernel, shows that less than 10% of all files of the Linux kernel use more then 2 different Kconfig symbols. When considering
2as found in the file Documentation/SubmittingPatches
expanded compilation units, we see that more than 85% of all compilation units have at most 350 different symbols in them. It is clear that we must also consider Kconfig symbols that are not only explicitly named in a compilation unit but come into effect indirectly. This can happen for example when a compilation unit overrides a configuration item with the #define preprocessor statement. Moreover, we need to compute a global variable order so that partial computation results can be reused. According to Mendonca et. al. [14], the largest feature models that can be handled today have about 2000 features and 400 extra constraints. Still, we expect that most compilation units in Linux will not exceed these limits, if any.
4. DISCUSSIONIn the previous section, we have outlined our proposed tool that will be part of a greater framework to assist managing and verifying the variability in the Linux kernel. We hope that our tool will be adopted by the various Linux communities involved with variability management and issues that arise from it.Especially targeted for driver developers, our framework would be able to show what configuration derived variability is actually used by a device driver. This would highlight the variability points introduced for example by driver developers, but also indicate interaction with other features that might have not been considered (yet) during the implementation of the driver. Depending on these additional variation points, this can indicate that additional test cases need to be considered.Similarly, subsystem maintainers could use our tool during reviews and integrations. While inspecting the Linux Guidelines for patch submission and review 2 it turns out that 9 out of 24 points deal with K config related issues. These issues are very hard to test and review; our framework can assist here with visualizing and verifying the additional variation points. While we are convinced that our framework will be useful for kernel maintainers, we need to consider if our approach scales with the amount of variability in Linux. With Linux, we are facing a variant model of about 8000 features. It is well known that the size of BDDs is very sensitive to the number and order of its variables, which may lead to insufficient memory problems. However, our preliminary results clearly show that the variability is not uniformly distributed across the Linux source code, but variability hot spots can be identified easily. Therefore, we will work on a per compilation-unit basis in order to keep the BDDs reasonably sized. A first analysis with a self written tool based on sparse [10], a framework for static analysis written for the Linux kernel, shows that less than 10% of all files of the Linux kernel use more then 2 different Kconfig symbols. When considering2as found in the file Documentation/SubmittingPatches expanded compilation units, we see that more than 85% of all compilation units have at most 350 different symbols in them. It is clear that we must also consider Kconfig symbols that are not only explicitly named in a compilation unit but come into effect indirectly. This can happen for example when a compilation unit overrides a configuration item with the #define preprocessor statement. Moreover, we need to compute a global variable order so that partial computation results can be reused. According to Mendonca et. al. [14], the largest feature models that can be handled today have about 2000 features and 400 extra constraints. Still, we expect that most compilation units in Linux will not exceed these limits, if any.
การแปล กรุณารอสักครู่..
