Skip to content

compilation time and size #9

@FAMILIAR-project

Description

@FAMILIAR-project

An hypothesis is that the compilation time is related to the size of the Linux kernel: the more you spend time in compiling code, larger is the kernel size.
Both compilation time and kernel sizes strongly depend on the configuration used since some options may have different effects.
We aim to verify this hypothesis and characaterize the exact relationship between compilation time and size.

To do so, we first need to measure in an accurate way the compilation time. Right now, in our dataset, compilation time is not trustable since we have used very different machines with different CPUs, cores, etc. and also different workloads.
We may also have doubts about the measurement procedure of TuxML: does TuxML start to measure at the right time? when there is a compilation error, there is a try-and-fix process based on apt that can bias results, does it count?
A cross-cutting challenge is that we have to measure many configurations. The use of an individual machine does not scale.
A plan is thus to use a cluster of machines, but we have to verify that the machines have the same characateristics and are not used by other people.

The plan is as follows:

  • in IGRIDA, using a specific cluster when requesting machines and fix everything we can (number of cores, RAM, etc.)
  • repeat measurements over a specific configuration (5 times say)
  • manual tests to verify that the measurement is OK or logs analysis to determine whether there was something strange

Once we have measurements, we can think about finding a linear correlation between size and compilation time.
I'm suspecting it will be more subtle since:

  • options compiled as modules ('m') are not part of the kernel, and do not directly influence size, but have an effect on compilation time
  • some options may have limited effect on size but require lots of compilations
    In other words the magic formula can be something like
    compilationTime ~= size / Y + nbodules + CONFIGXX1 + 5*CONFIGXX87
    Let's see!

I've used the following script for my past experiences in IGRIDA... the goal was to have the same kind of machine for controlling the homogeneous measurement of time

#!/bin/sh
#OAR -l core=8,walltime=12:00:00
#OAR -p cluster = 'lambda'
#OAR -O /temp_dd/igrida-fs1/macher/SCRATCH/fake_job.%jobid%.output
#OAR -E /temp_dd/igrida-fs1/macher/SCRATCH/fake_job.%jobid%.error
set -xv

echo
echo "Starting x264 config measurements"
echo "==================================="

./launchAll

echo
echo "DONE x264!"
echo "---------------------"
EOF

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions