2020-10-22 18:18:54 |
Lucas Kanashiro |
bug |
|
|
added bug |
2020-10-22 18:19:11 |
Lucas Kanashiro |
nominated for series |
|
Ubuntu Focal |
|
2020-10-22 18:19:11 |
Lucas Kanashiro |
bug task added |
|
ruby2.7 (Ubuntu Focal) |
|
2020-10-22 18:19:11 |
Lucas Kanashiro |
nominated for series |
|
Ubuntu Bionic |
|
2020-10-22 18:19:11 |
Lucas Kanashiro |
bug task added |
|
ruby2.7 (Ubuntu Bionic) |
|
2020-10-22 19:07:57 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~lucaskanashiro/ubuntu/+source/ruby2.7/+git/ruby2.7/+merge/392681 |
|
2020-10-23 12:47:02 |
Lucas Kanashiro |
bug |
|
|
added subscriber Ubuntu Stable Release Updates Team |
2020-10-27 22:15:27 |
Brian Murray |
bug |
|
|
added subscriber Brian Murray |
2020-10-27 22:15:32 |
Brian Murray |
ruby2.7 (Ubuntu): status |
New |
Incomplete |
|
2020-10-28 17:12:15 |
Lucas Kanashiro |
nominated for series |
|
Ubuntu Groovy |
|
2020-10-28 17:12:15 |
Lucas Kanashiro |
bug task added |
|
ruby2.7 (Ubuntu Groovy) |
|
2020-11-05 13:11:23 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~lucaskanashiro/ubuntu/+source/ruby2.7/+git/ruby2.7/+merge/393384 |
|
2020-11-05 14:27:35 |
Lucas Kanashiro |
ruby2.7 (Ubuntu Bionic): status |
New |
Invalid |
|
2020-11-05 14:28:03 |
Lucas Kanashiro |
bug task added |
|
ruby2.5 (Ubuntu) |
|
2020-11-05 14:28:12 |
Lucas Kanashiro |
ruby2.5 (Ubuntu Groovy): status |
New |
Invalid |
|
2020-11-05 14:28:16 |
Lucas Kanashiro |
ruby2.5 (Ubuntu Focal): status |
New |
Invalid |
|
2020-11-05 14:28:21 |
Lucas Kanashiro |
ruby2.5 (Ubuntu Bionic): status |
New |
Triaged |
|
2020-11-05 14:28:29 |
Lucas Kanashiro |
ruby2.7 (Ubuntu Focal): status |
New |
Triaged |
|
2020-11-05 14:28:32 |
Lucas Kanashiro |
ruby2.7 (Ubuntu Groovy): status |
New |
Triaged |
|
2020-11-05 14:28:42 |
Lucas Kanashiro |
ruby2.5 (Ubuntu): status |
New |
Invalid |
|
2020-11-05 14:28:57 |
Lucas Kanashiro |
ruby2.7 (Ubuntu): assignee |
|
Lucas Kanashiro (lucaskanashiro) |
|
2020-11-05 14:29:01 |
Lucas Kanashiro |
ruby2.7 (Ubuntu Focal): assignee |
|
Lucas Kanashiro (lucaskanashiro) |
|
2020-11-05 14:29:03 |
Lucas Kanashiro |
ruby2.7 (Ubuntu Groovy): assignee |
|
Lucas Kanashiro (lucaskanashiro) |
|
2020-11-05 14:29:08 |
Lucas Kanashiro |
ruby2.5 (Ubuntu Bionic): assignee |
|
Lucas Kanashiro (lucaskanashiro) |
|
2020-11-05 14:34:00 |
Lucas Kanashiro |
ruby2.5 (Ubuntu Bionic): status |
Triaged |
In Progress |
|
2020-11-05 14:34:03 |
Lucas Kanashiro |
ruby2.7 (Ubuntu Focal): status |
Triaged |
In Progress |
|
2020-11-05 14:34:04 |
Lucas Kanashiro |
ruby2.7 (Ubuntu Groovy): status |
Triaged |
In Progress |
|
2020-11-05 14:34:14 |
Lucas Kanashiro |
ruby2.7 (Ubuntu): status |
Incomplete |
In Progress |
|
2020-11-06 21:01:31 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~lucaskanashiro/ubuntu/+source/ruby2.5/+git/ruby2.5/+merge/393470 |
|
2020-11-11 19:54:10 |
Lucas Kanashiro |
description |
[Impact]
Upstream merged some changes to improve performance on arm64 which could benefit Ubuntu users:
https://github.com/ruby/ruby/commit/511b55bcefc81c03
Those changes considerably increase the number of instructions executed per second (ips) and also reduce the time to execute different tasks. On the other hand, it increases a bit the memory consumption. Here you can find the results of an experiment where some benchmarks defined by upstream were executed with the proposed patch on top of the Focal source package, a simple rebuild of the Focal version, and the binary from the archive in a Raspberry Pi 4 and a Canonistack VM (check the summary tab):
https://docs.google.com/spreadsheets/d/1_-H78uBDrlKHcmH1IPCbnxhLsNnD6Nj-Ya31_QSnW54/edit?usp=sharing
It is quite impressive how under some circumstances the ips was increased in more than 50% and the time taken to execute some tasks reduced more than 25%. IMHO those numbers are really good, and the small increase of at most 4% in the memory consumption worth in this case.
[Test Case]
Run the upstream benchmarks in a Ubuntu Focal arm64 machine:
1 - Install the ruby2.7 binary form the archive.
2 - Rebuild the ruby2.7 source package from Focal and install it.
3 - Build the ruby2.7 source package from Focal with the optimization patch on top of it and install it.
4 - Install the benchmark_driver gem. It is not in the archive, so install it from rubygems (sudo gem install benchmark_driver).
5 - Download the benchmarks definition from upstream master branch (https://github.com/ruby/ruby/raw/master/benchmark/). They are:
* vm_array.yml
* vm_attr_ivar_set.yml
* vm_bigarray.yml
* vm_block.yml
* vm_attr_ivar.yml
* vm_backtrace.rb
* vm_bighash.yml
* vm_block_handler.yml
6 - Run the benchmarks (in the presented experiment 6 rounds were executed):
$ benchmark-driver $BENCHMARK_INPUT_DIR/*.yml \
-r $runner -e $RUBY_SYSTEM -e $RUBY_PATCHED -e $RUBY_REBUILT
where $BENCHMARK_INPUT_DIR is the directory with the benchmarks definition and $RUBY* is the path to the respective ruby versions under analysis.
[Regression Potential]
The code changes impact only aarch64 so no regression is expected in other architectures. No breakage during runtime is expected.
Based on the experiment presented above we might expect some extra memory consumption hitting users. However, the increase of at most 4% of memory consumption faced during the experiment seems a fair price to pay for the boost in performance this patch will provide. |
[Impact]
Upstream merged some changes to improve performance on arm64 which could benefit Ubuntu users:
https://github.com/ruby/ruby/commit/511b55bcefc81c03
FWIW the landing of this patch was driven by AWS to improve performance on their arm64 instances. Actually, those are performance optimizations improvements which arm64 is missing that other architectures have.
Those changes considerably increase the number of instructions executed per second (ips) and also reduce the time to execute different tasks. On the other hand, it increases a bit the memory consumption. Here you can find the results of an experiment where some benchmarks defined by upstream were executed with the proposed patch on top of the Focal source package, a simple rebuild of the Focal version, and the binary from the archive in a Raspberry Pi 4 and a Canonistack VM (check the summary tab):
https://docs.google.com/spreadsheets/d/1_-H78uBDrlKHcmH1IPCbnxhLsNnD6Nj-Ya31_QSnW54/edit?usp=sharing
It is quite impressive how under some circumstances the ips was increased in more than 50% and the time taken to execute some tasks reduced more than 25%. IMHO those numbers are really good, and the small increase of at most 4% in the memory consumption worth in this case.
[Test Case]
Run the upstream benchmarks in a Ubuntu Focal arm64 machine:
1 - Install the ruby2.7 binary form the archive.
2 - Rebuild the ruby2.7 source package from Focal and install it.
3 - Build the ruby2.7 source package from Focal with the optimization patch on top of it and install it.
4 - Install the benchmark_driver gem. It is not in the archive, so install it from rubygems (sudo gem install benchmark_driver).
5 - Download the benchmarks definition from upstream master branch (https://github.com/ruby/ruby/raw/master/benchmark/). They are:
* vm_array.yml
* vm_attr_ivar_set.yml
* vm_bigarray.yml
* vm_block.yml
* vm_attr_ivar.yml
* vm_backtrace.rb
* vm_bighash.yml
* vm_block_handler.yml
6 - Run the benchmarks (in the presented experiment 6 rounds were executed):
$ benchmark-driver $BENCHMARK_INPUT_DIR/*.yml \
-r $runner -e $RUBY_SYSTEM -e $RUBY_PATCHED -e $RUBY_REBUILT
where $BENCHMARK_INPUT_DIR is the directory with the benchmarks definition and $RUBY* is the path to the respective ruby versions under analysis.
[Regression Potential]
The code changes impact only aarch64 so no regression is expected in other architectures. No breakage during runtime is expected.
Based on the experiment presented above we might expect some extra memory consumption hitting users. However, the increase of at most 4% of memory consumption faced during the experiment seems a fair price to pay for the boost in performance this patch will provide. |
|
2020-11-11 19:55:33 |
Lucas Kanashiro |
summary |
[SRU] Enable some arm64 optimizations |
[SRU] Enable some arm64 performance optimizations already available for other architectures |
|
2020-11-11 19:57:32 |
Lucas Kanashiro |
description |
[Impact]
Upstream merged some changes to improve performance on arm64 which could benefit Ubuntu users:
https://github.com/ruby/ruby/commit/511b55bcefc81c03
FWIW the landing of this patch was driven by AWS to improve performance on their arm64 instances. Actually, those are performance optimizations improvements which arm64 is missing that other architectures have.
Those changes considerably increase the number of instructions executed per second (ips) and also reduce the time to execute different tasks. On the other hand, it increases a bit the memory consumption. Here you can find the results of an experiment where some benchmarks defined by upstream were executed with the proposed patch on top of the Focal source package, a simple rebuild of the Focal version, and the binary from the archive in a Raspberry Pi 4 and a Canonistack VM (check the summary tab):
https://docs.google.com/spreadsheets/d/1_-H78uBDrlKHcmH1IPCbnxhLsNnD6Nj-Ya31_QSnW54/edit?usp=sharing
It is quite impressive how under some circumstances the ips was increased in more than 50% and the time taken to execute some tasks reduced more than 25%. IMHO those numbers are really good, and the small increase of at most 4% in the memory consumption worth in this case.
[Test Case]
Run the upstream benchmarks in a Ubuntu Focal arm64 machine:
1 - Install the ruby2.7 binary form the archive.
2 - Rebuild the ruby2.7 source package from Focal and install it.
3 - Build the ruby2.7 source package from Focal with the optimization patch on top of it and install it.
4 - Install the benchmark_driver gem. It is not in the archive, so install it from rubygems (sudo gem install benchmark_driver).
5 - Download the benchmarks definition from upstream master branch (https://github.com/ruby/ruby/raw/master/benchmark/). They are:
* vm_array.yml
* vm_attr_ivar_set.yml
* vm_bigarray.yml
* vm_block.yml
* vm_attr_ivar.yml
* vm_backtrace.rb
* vm_bighash.yml
* vm_block_handler.yml
6 - Run the benchmarks (in the presented experiment 6 rounds were executed):
$ benchmark-driver $BENCHMARK_INPUT_DIR/*.yml \
-r $runner -e $RUBY_SYSTEM -e $RUBY_PATCHED -e $RUBY_REBUILT
where $BENCHMARK_INPUT_DIR is the directory with the benchmarks definition and $RUBY* is the path to the respective ruby versions under analysis.
[Regression Potential]
The code changes impact only aarch64 so no regression is expected in other architectures. No breakage during runtime is expected.
Based on the experiment presented above we might expect some extra memory consumption hitting users. However, the increase of at most 4% of memory consumption faced during the experiment seems a fair price to pay for the boost in performance this patch will provide. |
[Impact]
Upstream merged some changes to improve performance on arm64 which could benefit Ubuntu users:
https://github.com/ruby/ruby/commit/511b55bcefc81c03
FWIW the landing of this patch was driven by AWS to improve performance on their arm64 instances. Actually, those are performance optimizations improvements which arm64 is missing that other architectures have.
Those changes considerably increase the number of instructions executed per second (ips) and also reduce the time to execute different tasks. On the other hand, it increases a bit the memory consumption. Here you can find the results of an experiment where some benchmarks defined by upstream were executed with the proposed patch on top of the Focal source package, a simple rebuild of the Focal version, and the binary from the archive in a Raspberry Pi 4 and a Canonistack VM (check the summary tab):
https://docs.google.com/spreadsheets/d/1_-H78uBDrlKHcmH1IPCbnxhLsNnD6Nj-Ya31_QSnW54/edit?usp=sharing
It is quite impressive how under some circumstances the ips was increased in more than 50% and the time taken to execute some tasks reduced more than 25%. IMHO those numbers are really good, and the small increase of at most 4% in the memory consumption worth in this case.
[Test Case]
Run the upstream benchmarks in a Ubuntu Focal arm64 machine:
1 - Install the ruby2.7 binary form the archive.
2 - Rebuild the ruby2.7 source package from Focal and install it.
3 - Build the ruby2.7 source package from Focal with the optimization patch on top of it and install it.
4 - Install the benchmark_driver gem. It is not in the archive, so install it from rubygems (sudo gem install benchmark_driver).
5 - Download the benchmarks definition from upstream master branch (https://github.com/ruby/ruby/raw/master/benchmark/). They are:
* vm_array.yml
* vm_attr_ivar_set.yml
* vm_bigarray.yml
* vm_block.yml
* vm_attr_ivar.yml
* vm_backtrace.rb
* vm_bighash.yml
* vm_block_handler.yml
6 - Run the benchmarks (in the presented experiment 6 rounds were executed):
$ benchmark-driver $BENCHMARK_INPUT_DIR/*.yml \
-r $runner -e $RUBY_SYSTEM -e $RUBY_PATCHED -e $RUBY_REBUILT
where $BENCHMARK_INPUT_DIR is the directory with the benchmarks definition and $RUBY* is the path to the respective ruby versions under analysis.
[Regression Potential]
The code changes impact only aarch64 so no regression is expected in other architectures. No breakage during runtime is expected.
Based on the experiment presented above we might expect some extra memory consumption hitting users. However, the increase of at most 4% of memory consumption faced during the experiment seems a fair price to pay for the boost in performance this patch will provide.
With performance improvements, particularly in C code, common things to watch for would be segfaults, unexpected behavioral changes, and performance regressions that are seen only on arm64. Mitigating the risk here is that the code paths are already in use for many other architectures. |
|
2020-11-11 20:12:48 |
Launchpad Janitor |
ruby2.7 (Ubuntu): status |
In Progress |
Fix Released |
|
2020-11-17 18:05:55 |
Brian Murray |
ruby2.7 (Ubuntu Groovy): status |
In Progress |
Fix Committed |
|
2020-11-17 18:05:59 |
Brian Murray |
bug |
|
|
added subscriber SRU Verification |
2020-11-17 18:06:03 |
Brian Murray |
tags |
|
verification-needed verification-needed-groovy |
|
2020-11-17 21:53:33 |
Brian Murray |
ruby2.7 (Ubuntu Focal): status |
In Progress |
Fix Committed |
|
2020-11-17 21:53:40 |
Brian Murray |
tags |
verification-needed verification-needed-groovy |
verification-needed verification-needed-focal verification-needed-groovy |
|
2020-11-18 19:51:30 |
Lucas Kanashiro |
tags |
verification-needed verification-needed-focal verification-needed-groovy |
verification-done-focal verification-done-groovy |
|
2020-11-23 01:30:59 |
Mathew Hodson |
bug task deleted |
ruby2.7 (Ubuntu Bionic) |
|
|
2020-11-23 01:31:19 |
Mathew Hodson |
bug task deleted |
ruby2.5 (Ubuntu Groovy) |
|
|
2020-11-23 01:31:22 |
Mathew Hodson |
bug task deleted |
ruby2.5 (Ubuntu Focal) |
|
|
2020-11-23 01:31:31 |
Mathew Hodson |
bug task deleted |
ruby2.5 (Ubuntu) |
|
|
2020-11-24 19:05:28 |
Brian Murray |
ruby2.5 (Ubuntu Bionic): status |
In Progress |
Fix Committed |
|
2020-11-24 19:05:35 |
Brian Murray |
tags |
verification-done-focal verification-done-groovy |
verification-done-focal verification-done-groovy verification-needed verification-needed-bionic |
|
2020-11-24 23:18:33 |
Launchpad Janitor |
ruby2.7 (Ubuntu Groovy): status |
Fix Committed |
Fix Released |
|
2020-11-24 23:18:38 |
Chris Halse Rogers |
removed subscriber Ubuntu Stable Release Updates Team |
|
|
|
2020-11-24 23:18:59 |
Launchpad Janitor |
ruby2.7 (Ubuntu Focal): status |
Fix Committed |
Fix Released |
|
2020-11-25 19:45:27 |
Lucas Kanashiro |
tags |
verification-done-focal verification-done-groovy verification-needed verification-needed-bionic |
verification-done verification-done-bionic verification-done-focal verification-done-groovy |
|
2020-12-02 00:47:47 |
Launchpad Janitor |
ruby2.5 (Ubuntu Bionic): status |
Fix Committed |
Fix Released |
|