New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Travis and --test-lang option #3332

Merged
merged 15 commits into from Feb 26, 2018

Conversation

Projects
None yet
4 participants
@nbrady-techempower
Member

nbrady-techempower commented Feb 24, 2018

Travis now limits execution to 200 jobs in the matrix. If you go over 200 jobs, travis will not start any of the jobs. Also, travis time limit is 50 mins. So, a potential solution is to group jobs by language. This may not be suitable for all languages as the execution time may be exceeded if there are too many tests. However, I think in a lot of cases this will also speed up runs because of docker caching in a single job. Travis diffing logic would have to change some to avoid full runs, but it will anyway for the travis docker branch.

Total execution time separately for the C languages I've grouped here is just over 60 minutes. Curious to see how long one job would take here.

See #3324

If we do move forward with something like this, i'd like to see a --test-lang C in the toolset as well, and we can do - "TESTLANG=C" in the build jobs for cleaner display.

@mention-bot

This comment has been minimized.

Show comment
Hide comment
@mention-bot

mention-bot Feb 24, 2018

Thanks @nbrady-techempower for contributing to The Framework Benchmarks! @TechEmpower, code you've worked on has been modified. If you have the chance, please review. If you wish to unsubscribe from these notices, please open a Pull Request with the commit message [ci skip] and your github name added to the userBlacklist array in the .mention-bot file.

mention-bot commented Feb 24, 2018

Thanks @nbrady-techempower for contributing to The Framework Benchmarks! @TechEmpower, code you've worked on has been modified. If you have the chance, please review. If you wish to unsubscribe from these notices, please open a Pull Request with the commit message [ci skip] and your github name added to the userBlacklist array in the .mention-bot file.

@RX14

This comment has been minimized.

Show comment
Hide comment
@RX14

RX14 Feb 24, 2018

Contributor

Isn't the startup time of each travis VM the most time consuming factor here (given that almost all builds are partial)? Surely it'd be far faster to have a single travis job and simply execute the few tests that change in order?

Unfortunately that breaks down when you adjust some core infrastructure and have to rebuild everything... Hmm

Contributor

RX14 commented Feb 24, 2018

Isn't the startup time of each travis VM the most time consuming factor here (given that almost all builds are partial)? Surely it'd be far faster to have a single travis job and simply execute the few tests that change in order?

Unfortunately that breaks down when you adjust some core infrastructure and have to rebuild everything... Hmm

@RX14

This comment has been minimized.

Show comment
Hide comment
@RX14

RX14 Feb 24, 2018

Contributor

Perhaps the optimal solution is to randomly partition the languages into 4 VMs (given only 4 jobs in the matrix can run in parallel) which gets you max parallelism when everything needs to be redone, but reduces the overhead of (in the common case) starting 26 new VMs just to not use 25 of them.

Contributor

RX14 commented Feb 24, 2018

Perhaps the optimal solution is to randomly partition the languages into 4 VMs (given only 4 jobs in the matrix can run in parallel) which gets you max parallelism when everything needs to be redone, but reduces the overhead of (in the common case) starting 26 new VMs just to not use 25 of them.

@nbrady-techempower

This comment has been minimized.

Show comment
Hide comment
@nbrady-techempower

nbrady-techempower Feb 24, 2018

Member

@RX14 You cant partition a full run into 4 VMs because you have a max execution time of 50 minutes.

Member

nbrady-techempower commented Feb 24, 2018

@RX14 You cant partition a full run into 4 VMs because you have a max execution time of 50 minutes.

@RX14

This comment has been minimized.

Show comment
Hide comment
@RX14

RX14 Feb 24, 2018

Contributor

@nbrady-techempower oh, that makes sense. Quite a difficult binpacking problem so I guess it's far easier to just be less efficient. This PR is an improvement at least.

Contributor

RX14 commented Feb 24, 2018

@nbrady-techempower oh, that makes sense. Quite a difficult binpacking problem so I guess it's far easier to just be less efficient. This PR is an improvement at least.

@nbrady-techempower

This comment has been minimized.

Show comment
Hide comment
@nbrady-techempower

nbrady-techempower Feb 25, 2018

Member

So this worked out well. I added the --test-lang option and made travis decipher between TESTDIR and TESTLANG environment variables. All of the C tests ran in about half the time. Doing this for a few languages will free up job spaces and generate quicker full runs. Probably best to do the ones that are worked on the least to start, Elixir, Erlang, etc. I'll have to modify the diffing tool as well so that only the framework tests that changed inside TESTLANG run but I think this is 👍

ping @msmith-techempower

Member

nbrady-techempower commented Feb 25, 2018

So this worked out well. I added the --test-lang option and made travis decipher between TESTDIR and TESTLANG environment variables. All of the C tests ran in about half the time. Doing this for a few languages will free up job spaces and generate quicker full runs. Probably best to do the ones that are worked on the least to start, Elixir, Erlang, etc. I'll have to modify the diffing tool as well so that only the framework tests that changed inside TESTLANG run but I think this is 👍

ping @msmith-techempower

@nbrady-techempower nbrady-techempower changed the title from [Don't Merge] Travis - Combine languages to Travis and --test-lang option Feb 26, 2018

@msmith-techempower msmith-techempower merged commit 59d7b19 into TechEmpower:docker Feb 26, 2018

1 check passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details

@nbrady-techempower nbrady-techempower deleted the nbrady-techempower:docker-travis branch Mar 20, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment