[Speed] Status of speed.python.org?

2012-10-18 Thread Victor Stinner
Hi, What is the status of speed.python.org? Where are the benchmarks? Does anyone try to setup something to run regulary benchmarks and display data on web pages? How can I help? Victor ___ Speed mailing list Speed@python.org http://mail.python.org/mai

Re: [Speed] [Python-Dev] speed.python.org

2016-02-04 Thread Victor Stinner
Great! 2016-02-04 7:48 GMT+01:00 Zachary Ware : > I'm happy to announce that speed.python.org is finally functional! > There's not much there yet, as each benchmark builder has only sent > one result so far (and one of those involved a bit of cheating on my > part), but it's there. > > There are l

Re: [Speed] Any changes we want to make to perf.py?

2016-02-11 Thread Victor Stinner
I don't think that using a fixed number of iterations is good to get stable benchmark results. I opened the following issue to discussed that: https://bugs.python.org/issue26275 I proposed to calibrate the number of runs and the number of loops using time. I'm not convinced myself yet that it's a

Re: [Speed] Should we change what benchmarks we have?

2016-02-11 Thread Victor Stinner
2016-02-11 19:36 GMT+01:00 Brett Cannon : > Are we happy with the current benchmarks? bm_regex8 looks unstable, but I don't know if it's an issue of the benchmark itself or perf.py (see the other thread "[Speed] Any changes we want to make to perf.py?"). I spent a lot of time (probably too much!)

[Speed] Tool to run Python microbenchmarks

2016-02-11 Thread Victor Stinner
Hi, To run "micro"-benchmarks on "micro"-optimizations, I started to use timeit, but in my experience timeit it far from reliable. When I say micro: I'm talking about a test which takes less than 1000 ns, sometimes even a few nanoseconds! You always have to run the same micro-benchmark when time

[Speed] Linux tip: use isolcpus to have (more) reliable benchmark

2016-02-11 Thread Victor Stinner
Hi, I'm sharing with you my notes (tricks) to get more reliable benchmarks on Linux if your CPU have multiple cores: https://haypo-notes.readthedocs.org/microbenchmark.html#reliable-micro-benchmarks FYI perf.py recently got a new --affinity= optional parameter. I plan to send a patch to automati

Re: [Speed] Should we change what benchmarks we have?

2016-02-11 Thread Victor Stinner
2016-02-11 23:50 GMT+01:00 Yury Selivanov : > That said, I'd like to find a better alternative to spectral-norm, something > real, that stresses ints/floats and not using numpy. Case Van Horsen mentioned mpmath test suite: https://bugs.python.org/issue21955#msg259859 I extracted the slowest test

Re: [Speed] Should we change what benchmarks we have?

2016-02-11 Thread Victor Stinner
2016-02-12 0:16 GMT+01:00 Yury Selivanov : > Unless 21955 makes numpy code slower, I'm not sure why we're discussing > this. Stefan Krah wrote that it makes the decimal module 6% slower: https://bugs.python.org/issue21955#msg259571 Again in another message, "big slowdown for _decimal": https://bu

Re: [Speed] Tool to run Python microbenchmarks

2016-02-12 Thread Victor Stinner
Hi, 2016-02-12 16:42 GMT+01:00 Maciej Fijalkowski : > timeit does two really terrible things - uses min(time) and disables > the garbage collector, which makes it completely unreliable. Can you please elaborate why using min(times) is a bad idea? I'm also using min() in my tool, I expect that it

[Speed] Disable hash randomization to get reliable benchmarks

2016-04-24 Thread Victor Stinner
Hi, Last months, I spent a lot of time on microbenchmarks. Probably too much time :-) I found a great Linux config to get a much more stable system to get reliable microbenchmarks: https://haypo-notes.readthedocs.org/microbenchmark.html * isolate some CPU cores * force CPU to performance * disabl

Re: [Speed] Disable hash randomization to get reliable benchmarks

2016-04-25 Thread Victor Stinner
Hi, The problem with not cheating on the statistical distribution is that I would like to get a quick feedback on my changes to know if my change is faster or not. Having to wait 1 hour to check a single change is not really convenient. I prefer to get a feedback is less than 5 minutes. Tune Linux

Re: [Speed] Disable hash randomization to get reliable benchmarks

2016-04-26 Thread Victor Stinner
Hi, 2016-04-26 10:56 GMT+02:00 Armin Rigo : > Hi, > > On 25 April 2016 at 08:25, Maciej Fijalkowski wrote: >> The problem with disabled ASLR is that you change the measurment from >> a statistical distribution, to one draw from a statistical >> distribution repeatedly. There is no going around do

Re: [Speed] Disable hash randomization to get reliable benchmarks

2016-04-26 Thread Victor Stinner
Hi, 2016-04-26 11:01 GMT+02:00 Antonio Cuni : > On Mon, Apr 25, 2016 at 12:49 AM, Victor Stinner > wrote: >> Last months, I spent a lot of time on microbenchmarks. Probably too >> much time :-) I found a great Linux config to get a much more stable >> system to get

Re: [Speed] Disable hash randomization to get reliable benchmarks

2016-04-26 Thread Victor Stinner
2016-04-26 18:36 GMT+02:00 Antoine Pitrou : > The minimum is a reasonable metric for quick throwaway benchmarks as > timeit is designed for, as it has a better hope of alleviating the > impact of system load (as such throwaway benchmarks are often run on > the developer's workstation). IMHO we mus

[Speed] When CPython performance depends on dead code...

2016-04-27 Thread Victor Stinner
amp; CPU isolation). Again, deadcode1 looks slower in most cases, whereas deadcode2 looks faster in most cases, whereas the difference is still dead code... Victor, disappointed changeset: 101088:96628516a16b user:Victor Stinner date:Mon Apr 25 21:34:47 2016 +0200 files:

Re: [Speed] When CPython performance depends on dead code...

2016-04-27 Thread Victor Stinner
> For more benchmarks, see attached deadcode1.log and deadcode2.log: > results of the CPython benchmark to compare deadcode1 VS reference, > and deadcode2 VS reference run on my desktop PC (perf.py --fast & CPU > isolation). Again, deadcode1 looks slower in most cases, whereas > deadcode2 looks fas

Re: [Speed] When CPython performance depends on dead code...

2016-04-28 Thread Victor Stinner
Hi, 2016-04-27 20:30 GMT+02:00 Brett Cannon : > My first intuition is some cache somewhere is unhappy w/ the varying sizes. > Have you tried any of this on another machine to see if the results are > consistent? On my laptop, the performance when I add deadcode doesn't seem to change much: the de

[Speed] CPU speed of one core changes for unknown reason

2016-05-17 Thread Victor Stinner
Hi, I'm still having fun with microbenchmarks. I disabled Power States (pstate) of my Intel CPU and forced the frequency for 3.4 GHz. I isolated 2 physical cores on a total of 4. Timings are very stable *but* sometimes, I get impressive slowdown: like 60% or 80% slower, but only for a short time.

[Speed] External sources of noise changing call_simple "performance"

2016-05-17 Thread Victor Stinner
Hi, I'm still (!) investigating the reasons why the benchmark call_simple (ok, let's be honest: the *micro*benchmark) gets different results for unknown reasons. (*) Collisions in hash tables: perf.py already calls the benchmark with PYTHONHASHSEED=1 to test the same hash function. A more generic

Re: [Speed] CPU speed of one core changes for unknown reason

2016-05-17 Thread Victor Stinner
(the change can be a single MHz: 3400 => 3401). I didn't notice such minor CPU frequency change, but I didn't check carefully. Anyway, I disabled the Turbo Mode and Hyperthreading in the EFI. It should avoid the strange performance "drop". Victor 2016-05-17 16:44 GMT+02:00

Re: [Speed] External sources of noise changing call_simple "performance"

2016-05-18 Thread Victor Stinner
2016-05-18 8:55 GMT+02:00 Maciej Fijalkowski : > I think you misunderstand how caches work. The way caches work depends > on the addresses of memory (their value) which even with ASLR disabled > can differ between runs. Then you either do or don't have cache > collisions. How about you just accept

Re: [Speed] External sources of noise changing call_simple "performance"

2016-05-18 Thread Victor Stinner
2016-05-18 10:45 GMT+02:00 Armin Rigo : > On 17 May 2016 at 23:11, Victor Stinner wrote: >> with PYTHONHASHSEED=1 to test the same hash function. A more generic >> solution is to use multiple processes to test multiple hash seeds to >> get a better uniform distribution. &g

Re: [Speed] External sources of noise changing call_simple "performance"

2016-05-18 Thread Victor Stinner
2016-05-18 8:55 GMT+02:00 Maciej Fijalkowski : > I think you misunderstand how caches work. The way caches work depends > on the addresses of memory (their value) which even with ASLR disabled > can differ between runs. Then you either do or don't have cache > collisions. Ok. I'm not sure yet that

Re: [Speed] External sources of noise changing call_simple "performance"

2016-05-18 Thread Victor Stinner
2016-05-18 20:54 GMT+02:00 Maciej Fijalkowski : >> Ok. I'm not sure yet that it's feasible to get exactly the same memory >> addresses for "hot" objects allocated by Python between two versions >> of the code (...) > > Well the answer is to do more statistics really in my opinion. That > is, perf s

Re: [Speed] CPU speed of one core changes for unknown reason

2016-05-18 Thread Victor Stinner
2016-05-18 23:05 GMT+02:00 Paul Graydon : > Bear in mind that what you see by way of CPU Speed is based on *sampling*, > and the CPU can be switched speeds very > quickly. Far faster than you'd necessarily see in your periodic updates. > Also note that if your cooling isn't up to > scratch for

Re: [Speed] CPU speed of one core changes for unknown reason

2016-05-19 Thread Victor Stinner
FYI I'm running the CPython Benchmark Suite with: taskset -c 1,3 python3 -u perf.py --rigorous ../ref_python/pgo/python ../fastcall/pgo/python -b all I was asked to use --rigorous and -b all when I worked on other patches, like: https://bugs.python.org/issue21955#msg259431 2016-05-19 0:04 GMT+02

Re: [Speed] External sources of noise changing call_simple "performance"

2016-05-19 Thread Victor Stinner
2016-05-17 23:11 GMT+02:00 Victor Stinner : > (...) > > (*) System load => CPU isolation, disable ASLR, set CPU affinity on > IRQs, etc. work around this issue -- > http://haypo-notes.readthedocs.io/microbenchmark.html > > (... > > (*) Locale, size of the command l

Re: [Speed] External sources of noise changing call_simple "performance"

2016-05-31 Thread Victor Stinner
2016-05-30 10:14 GMT+02:00 Antoine Pitrou : >> I'm still (!) investigating the reasons why the benchmark call_simple >> (ok, let's be honest: the *micro*benchmark) gets different results for >> unknown reasons. > > Try to define MCACHE_STATS in Objects/typeobject.c and observe the > statistics from

[Speed] A new perf module: toolkit to write benchmarks

2016-06-01 Thread Victor Stinner
Hi, I started to write blog posts on stable benchmarks: 1) https://haypo.github.io/journey-to-stable-benchmark-system.html 2) https://haypo.github.io/journey-to-stable-benchmark-deadcode.html 3) https://haypo.github.io/journey-to-stable-benchmark-average.html One important point is that minimum

Re: [Speed] A new perf module: toolkit to write benchmarks

2016-06-02 Thread Victor Stinner
2016-06-02 10:38 GMT+02:00 Armin Rigo : > Looks good. IMHO the important bit is that `timeit` is simple to use, > readily available, and gives just a number, which makes it very > attractive for people. By default min & max are hidden. You can show them using -v option. To make the output even s

Re: [Speed] A new perf module: toolkit to write benchmarks

2016-06-02 Thread Victor Stinner
2016-06-02 9:17 GMT+02:00 Antoine Pitrou : > Just use a simple JSON format. Yeah, Python 2.7 includes are JSON parser and JSON is human readble (but not really designed to be modified by a human). I had a technical issue: I wanted to produce JSON output *and* keep nice human output at the same ti

[Speed] perf 0.2 released, perf fork of CPython benchmark suite

2016-06-07 Thread Victor Stinner
Hi, I completed the API of my small perf module and released a version 0.2: https://perf.readthedocs.io/ It is supposed to provide the basic tools to collect samples, compute the average, display the result, etc. I started to work on JSON serialization to "easily" run multiple processes. The idea

[Speed] perf 0.3 released

2016-06-10 Thread Victor Stinner
Hi, I just released perf 0.3. Major changes: - "python -m perf" CLI now has 3 commands: show, compare and compare_to. Compare commands says if the difference is significant (I copied the code from perf.py) - TextRunner is now able to spawn child processes, parse command arguments and more - If Te

[Speed] bm_pickle: why testing protocol 2?

2016-07-04 Thread Victor Stinner
Hi, performance/bm_pickle.py of the CPython benchmark suite uses the pickle protocol 2 by default. Why not always testing the highest protocol? In Python 3.5, the highest protocol is 4 which is more efficient than the protocol 2. Is it a deliberate choice to test exactly the same thing between P

[Speed] New CPython benchmark suite based on perf

2016-07-04 Thread Victor Stinner
Hi, I modified the CPython benchmark suite to use my perf module: https://hg.python.org/sandbox/benchmarks_perf Changes: * use statistics.median() rather than mean() to compute of "average" of samples. Example: Median +- Std dev: 256 ms +- 3 ms -> 262 ms +- 4 ms: 1.03x slower * replace com

Re: [Speed] New CPython benchmark suite based on perf

2016-07-04 Thread Victor Stinner
2016-07-04 16:17 GMT+02:00 Victor Stinner : > I modified the CPython benchmark suite to use my perf module: > https://hg.python.org/sandbox/benchmarks_perf Hum, you need the development version of perf to test it: git clone https://github.com/haypo/perf.git > Changes: > > * r

Re: [Speed] New CPython benchmark suite based on perf

2016-07-04 Thread Victor Stinner
2016-07-04 19:49 GMT+02:00 Antoine Pitrou : >>Median +- Std dev: 256 ms +- 3 ms -> 262 ms +- 4 ms: 1.03x slower > > That doesn't sound like a terrific idea. Why do you think the median > gives a more interesting figure here? When the distribution is uniform, mean and median are the same. In my

Re: [Speed] New CPython benchmark suite based on perf

2016-07-05 Thread Victor Stinner
2016-07-05 10:08 GMT+02:00 Antoine Pitrou : >> When the system noise is high, the skewness is much larger. In this >> case, median looks "more correct". > > It "looks" more correct? My main worry is to get reproductible "stable" benchmark results. I started to work on perf because most results of

Re: [Speed] New CPython benchmark suite based on perf

2016-07-05 Thread Victor Stinner
2016-07-05 12:08 GMT+02:00 Antoine Pitrou : > If it's a gaussian curve (not a curse, probably :-)), then you can > summarize it with two values: the mean and the stddev. But it's > probably not a gaussian, because of system noise and other factors, so > your assumption is wrong :-) What do you pr

[Speed] perf 0.6 released

2016-07-06 Thread Victor Stinner
Hi, I'm pleased to announce the release of the Python perf modul version 0.6. The main difference is that the JSON format and perf command line tools support benchmark suites and not only individual benchmarks. I added a new "convert" command which allows to modify a benchmark file: remove bench

Re: [Speed] New CPython benchmark suite based on perf

2016-07-06 Thread Victor Stinner
2016-07-04 16:17 GMT+02:00 Victor Stinner : > I modified the CPython benchmark suite to use my perf module: > https://hg.python.org/sandbox/benchmarks_perf Updates with the release of perf 0.6. runner.py now has 3 commands: run, compare, run_compare * "run" runs benchmarks on

Re: [Speed] perf 0.6 released

2016-07-06 Thread Victor Stinner
2016-07-06 18:41 GMT+02:00 Antoine Pitrou : > I'm not sure this is meant to implement my suggestion from the other > thread, Yes, I implemented this after the discussion we had in the other thread. > but if so, there is a misunderstanding: I did not suggest to > remove the samples outside of the

Re: [Speed] perf 0.6 released

2016-07-06 Thread Victor Stinner
2016-07-06 22:24 GMT+02:00 Antoine Pitrou : >> 5% smallest/5% largest: do you mean something like sorting all >> samples, remove items from the two tails? >> >> Something like sorted(samples)[3:-3] ? > > Yes. Hum, it may work if the distribution is uniform (symmetric), but usually the right tail i

[Speed] perf module 0.7 released

2016-07-18 Thread Victor Stinner
Hi, I released perf 0.7 (quickly followed by a 0.7.1 bugfix): http://perf.readthedocs.io/ I wrote this new version to collect more data in each process. It now reads (and stores) CPUs config, CPUs temperature, CPUs frequency, system load average, etc. Later we can add for example the process RSS

[Speed] Tracking memory usage

2016-07-28 Thread Victor Stinner
Hi, tl;dr Do you use "perf.py --track_memory"? If yes, for which purpose? Are you using it on Windows or Linux? I'm working on the CPython benchmark suite. It has a --track_memory command option to measure the peak of the memory usage. A main process runs worker processes and track their memory

[Speed] CPython Benchmark Suite usinf my perf module, GitHub, etc.

2016-07-28 Thread Victor Stinner
Hi, I updated all benchmarks of the CPython Benchmark Suite to use my perf module. So you get timings of all individual run all *all* benchmarks and store them in JSON to analyze them in detail. Each benchmark has a full CLI, for example it gets a new --output option to store result as JSON direct

Re: [Speed] Tracking memory usage

2016-07-29 Thread Victor Stinner
I modified my perf module to add two new options: --tracemalloc and --track-memory. --tracemalloc enables tracemalloc and gets the peak of the traced Python memory allocations: peak is computed per process. --track-memory is similar but reads PeakPagefileUsage of GetProcessMemoryInfo() on Windows

Re: [Speed] CPython Benchmark Suite usinf my perf module, GitHub, etc.

2016-07-29 Thread Victor Stinner
2016-07-29 19:03 GMT+02:00 Brett Cannon : >> * Should it support --track_memory? it doesn't support it correctly >> right now, it's less precise than before (memory is tracked directly >> in worker processes, no more by the main process) => discuss this >> point in my previous email > > I don't hav

Re: [Speed] CPython Benchmark Suite usinf my perf module, GitHub, etc.

2016-07-29 Thread Victor Stinner
2016-07-29 20:51 GMT+02:00 Zachary Ware : > I think rather than using virtual environments which aren't truly > supported by <3.3 anyway, ... What do you mean? I'm building and destroying dozens of venv everyday at work using tox on Python 2.7. The virtualenv command works well, no? Do you have is

Re: [Speed] Tracking memory usage

2016-08-07 Thread Victor Stinner
2016-07-30 19:48 GMT+02:00 Armin Rigo : > Hi Victor, > > Fwiw, there is some per-OS (and even apparently > per-Linux-distribution) solution mentioned here: > http://stackoverflow.com/questions/774556/peak-memory-usage-of-a-linux-unix-process > > For me on Arch Linux, "/usr/bin/time -v CMD" returns

[Speed] perf 0.7.3 released

2016-08-17 Thread Victor Stinner
The Python perf module is a toolkit to write, run, analyze and modify benchmarks: http://perf.readthedocs.io/en/latest/ Version 0.7.3 (2016-08-17): * add a new ``slowest`` command * convert: add ``--extract-metadata=NAME`` * add ``--tracemalloc`` option: use the ``tracemalloc`` module to track

Re: [Speed] Tracking memory usage

2016-08-17 Thread Victor Stinner
Ok, I just added the mem_max_rss metadata in the development version of the perf module, just after the perf 0.7.3 release. Victor 2016-08-08 3:38 GMT+02:00 Victor Stinner : > 2016-07-30 19:48 GMT+02:00 Armin Rigo : >> Hi Victor, >> >> Fwiw, there is some per-OS (and even ap

[Speed] New benchmark suite for Python

2016-08-17 Thread Victor Stinner
Hi, After a few months of work, I created a "new" benchmark suite for Python: https://github.com/python/benchmarks It's based on: https://hg.python.org/sandbox/benchmarks_perf which is my fork the CPython benchmark suite: https://hg.python.org/benchmarks which is based on Unladen Swallo

Re: [Speed] New benchmark suite for Python

2016-08-17 Thread Victor Stinner
2016-08-18 2:37 GMT+02:00 Victor Stinner : > PyPy, Pyston, Pyjion, Numba, etc. : Hey! it's now time to start to > take a look at my project and test it ;-) Tell me what is broken, what > is missing, and I will try to help you to move your project to this > new benchmark suite! I

Re: [Speed] New benchmark suite for Python

2016-08-18 Thread Victor Stinner
2016-08-18 6:47 GMT+02:00 Zachary Ware : > Also, if you're interested in having your interpreter benchmarked on > speed.python.org, contact me with clear instructions (preferably in > the form of a shell or Python script) on how to build, test, install, > and invoke your interpreter from a fresh Ub

Re: [Speed] New benchmark suite for Python

2016-08-18 Thread Victor Stinner
2016-08-18 8:48 GMT+02:00 Armin Rigo : > Indeed, bzr cannot be installed on PyPy because it uses Cython in a > strange way: it declares and directly pokes inside PyListObjects from > a .pyx file. But note that bzr (seems to) have systematically a pure > Python version of all its .pyx files. (...)

Re: [Speed] New benchmark suite for Python

2016-08-18 Thread Victor Stinner
Hi Maciej, 2016-08-18 9:17 GMT+02:00 Maciej Fijalkowski : > Did you look into integrating the pypy benchmarks that we added over the > years? Not yet, but yes, I plan to collect benchmarks from PyPy, Pyston, Pyjion, etc. Later we can discuss if some benchmarks should be disabled in the default

Re: [Speed] New benchmark suite for Python

2016-08-18 Thread Victor Stinner
2016-08-18 3:17 GMT+02:00 Victor Stinner : > I made a quick test on PyPy: (...) I ran a longer test last night. Some benchmarks were slower on PyPy. In fact, the benchmark doesn't give enough time to PyPy to warm up its JIT. I just released perf 0.7.4 which has a better calibration

Re: [Speed] New benchmark suite for Python

2016-08-21 Thread Victor Stinner
Le 21 août 2016 11:02 AM, "Maciej Fijalkowski" a écrit : > Let's not have it called "bzr" though because it gives the wrong > impression. The benchmark was called "bzr_startup", bit I agree that "django" mus be renamed to "django_template". There is an HTTP benchmark, tornado_http, using the loca

Re: [Speed] New benchmark suite for Python

2016-08-22 Thread Victor Stinner
Done: I renamed "django" benchmark" to "django_template": https://github.com/python/benchmarks/commit/d674a99e3a9a10a29c44349b2916740680e936c8 Victor 2016-08-21 19:36 GMT+02:00 Victor Stinner : > Le 21 août 2016 11:02 AM, "Maciej Fijalkowski" a écrit : &g

[Speed] performance 0.1 (and 0.1.1) release

2016-08-24 Thread Victor Stinner
Hi, I released a first version of the Python benchmark suite. (Quickly followed by a 0.1.1 bugfix ;-)) It is now possible to install it using pip: python3 -m pip install performance And run it using: pyperformance run --python=python2 --rigorous -b all -o py2.json pyperformance run --

Re: [Speed] performance 0.1 (and 0.1.1) release

2016-08-24 Thread Victor Stinner
2016-08-24 17:38 GMT+02:00 Victor Stinner : > Now the development version always install performance 0.1.1 (see > performance/requirements.txt). I should fix this to install the > development version of performance/ when it is run from the source > code (when setup.py is available i

[Speed] Rename python/benchmarks GitHub project to python/performance?

2016-08-25 Thread Victor Stinner
Hi, For the first release of the "new" benchmark suite, I chose the name "performance", since "benchmark" and "benchmarks" names were already reserved on PyPI. It's the name of the Python module, but also of the command line tool: "pyperformance". Since there is an "old" benchmark suite (https://

Re: [Speed] Rename python/benchmarks GitHub project to python/performance?

2016-08-26 Thread Victor Stinner
Le vendredi 26 août 2016, Antoine Pitrou a écrit : > On Fri, 26 Aug 2016 00:07:53 +0200 > Victor Stinner > > wrote: > > > > By the way, I don't know if it's worth it to have a "pyperformance" > > command line tool. You can already use "

Re: [Speed] performance 0.1 (and 0.1.1) release

2016-08-26 Thread Victor Stinner
Release early, release often: performance 0.1.2 has been released! The first version supporting Windows. I renamed the GitHub project from python/benchmarks to python/performance. All changes: * Windows is now supported * Add a new ``venv`` command to show, create, recrete or remove the virtual

[Speed] New instance of CodeSpeed at speed.python.org running performance on CPython and PyPy?

2016-09-01 Thread Victor Stinner
Hi, Would it be possible to run a new instance of CodeSpeed (the website behing speed.python.org) which would run the "performance" benchmark suite rather than the "benchmarks" benchmark suite? And would it be possible to run it on CPython (2.7 and 3.5 branches) and PyPy (master branch, maybe also

Re: [Speed] New instance of CodeSpeed at speed.python.org running performance on CPython and PyPy?

2016-09-01 Thread Victor Stinner
2016-09-01 19:53 GMT+02:00 Kevin Modzelewski : > Just my two cents -- having a benchmark change underneath the benchmark > runner is quite confusing to debug, because it looks indistinguishable from > a non-reproducible regression that happens in the performance itself. I agree. That's why I propo

[Speed] performance 0.2.2 released

2016-09-19 Thread Victor Stinner
Hi, I released performance 0.2.2. Compared to performance 0.1: * it fixes the --track-memory option, adds a new "show" command, * enhance "compare" output (display python & performance versions, use sample units: seconds or bytes), * it isolates again environment variables (fix --inherit-environ

[Speed] perf 0.7.11 released

2016-09-19 Thread Victor Stinner
Hi, I released perf 0.7.11. News since perf 0.7.3: * Support PyPy * Add units to samples: second, byte, integer. Benchmarks on the memory usage (track memory) are now displayed correctly. * Remove environment variables: add --inherit-environ cmdline option. * Add more metadata: mem_max_rss, pytho

[Speed] intel_pstate C0 bug on isolated CPUs with the performance governor

2016-09-22 Thread Victor Stinner
Hi, While analyzing a performance regression ( http://bugs.python.org/issue28243 ) , I had a major issue with my benchmark. Suddenly, for no reason, after 30 minutes of benchmarking, the benchmark became 2x FASTER... A similar issue occurred to me the last week when testing if PGO compilation mak

Re: [Speed] intel_pstate C0 bug on isolated CPUs with the performance governor

2016-09-23 Thread Victor Stinner
2016-09-23 11:23 GMT+02:00 Antoine Pitrou : > Did the benchmark really become 2x faster, or did the clock become 2x > slower? > > If you found a magic knob in your CPU that suddently makes it 2x > faster, many people would probably like to hear about it ;-) He he. It's a matter of point of view :-

Re: [Speed] intel_pstate C0 bug on isolated CPUs with the performance governor

2016-09-23 Thread Victor Stinner
2016-09-23 12:19 GMT+02:00 Antoine Pitrou : > On Fri, 23 Sep 2016 11:44:12 +0200 > Victor Stinner > wrote: >> I guess that for some reasons, the CPU frequency was 1.6 GHz (min >> frequency) even if I configured the CPU frequency governor to >> performance. > &

Re: [Speed] intel_pstate C0 bug on isolated CPUs with the performance governor

2016-09-23 Thread Victor Stinner
I wrote a long article explaing how I identified the bug by testing Turbo Boost, CPU temperature, CPU frequency, etc. https://haypo.github.io/intel-cpus-part2.html Copy/paste of my conclusion: To get stable benchmarks, the safest fix for all these issues is probably to set the CPU frequency of th

Re: [Speed] intel_pstate C0 bug on isolated CPUs with the performance governor

2016-09-27 Thread Victor Stinner
Hi, I made further tests and I understood better the issue. In short, the intel_pstate driver doesn't support NOHZ_FULL, and so the frequency of CPUs using NOHZ_FULL depends on the workload of other CPUs. This is especially true when using the powersave (default) cpu frequency governor. At least,

Re: [Speed] intel_pstate C0 bug on isolated CPUs with the performance governor

2016-09-29 Thread Victor Stinner
2016-09-29 17:11 GMT+02:00 Armin Rigo : > On my laptop, the speed ranges between 500MHz and 2300MHz. Oh I see, on this computer the difference can be up to 5x slower! >> * (Use NOHZ_FULL but) Force frequency to the maximum >> * Don't use NOHZ_FULL > > I think we should force the frequency to a s

[Speed] perf 0.7.12: --python and --compare-to options

2016-09-30 Thread Victor Stinner
Hi, I always wanted to be able to compare the performance of two Python versions using timeit *in a single command*. So I just implemented it! I added --python and --compare-to options. Real example to show the new "timeit --compared-to" feature: --- $ export PYTHONPATH=~/prog/GIT/perf $ ./pytho

[Speed] Performance 0.3 released with 10 new benchmarks

2016-10-10 Thread Victor Stinner
Hi, I just released performance 0.3, the Python benchmark suite, with 10 new benchmarks from the PyPy benchmark suite: https://github.com/python/performance Version 0.3.0 changelog. New benchmarks: * Add ``crypto_pyaes``: Benchmark a pure-Python implementation of the AES block-cipher in CTR m

Re: [Speed] Performance 0.3 released with 10 new benchmarks

2016-10-10 Thread Victor Stinner
I didn't copy/paste code from PyPy benchmaks directly. I updated 3rd party dependencies, I updated the code to use the perf API, and sometimes I even fixed bugs in the benchmarks. 2016-10-11 2:22 GMT+02:00 Victor Stinner : > * Add ``sqlalchemy_declarative`` and ``sqlalchemy_im

[Speed] Latest enhancements of perf 0.8.1 and performance 0.3.1

2016-10-19 Thread Victor Stinner
Hi, Latest enhancements: 1) perf supports multiple benchmarks per script 2) perf calibrates the benchmark in a dedicated process 3) new --duplication option to perf timeit (1) I solved an old limitaton of my perf module: since perf 0.8, it's now possible to run multiple benchmarks in a simple s

[Speed] Fwd: Benchmarking Python and micro-optimizations

2016-10-20 Thread Victor Stinner
If you are not subscribed to the Python-Dev mailing list, here is the copy of the email I just sent. Victor -- Forwarded message -- From: Victor Stinner Date: 2016-10-20 12:56 GMT+02:00 Subject: Benchmarking Python and micro-optimizations To: Python Dev Hi, Last months, I

Re: [Speed] Benchmarking Python and micro-optimizations

2016-10-21 Thread Victor Stinner
Hi, I removed all old benchmarks results and I started to run manually benchmarks. The timeline view is interesting to investigate performance regression: https://speed.python.org/timeline/#/?exe=3&ben=grid&env=1&revs=50&equid=off&quarts=on&extr=on For example, it seems like call_method became sl

Re: [Speed] Latest enhancements of perf 0.8.1 and performance 0.3.1

2016-11-02 Thread Victor Stinner
2016-11-02 11:04 GMT+01:00 Armin Rigo : > On 19 October 2016 at 18:55, Victor Stinner wrote: >> 3) new --duplication option to perf timeit > > This is never a good idea on top of PyPy, so I wouldn't mind if using > this option on top of PyPy threw an error. Can you pl

Re: [Speed] Latest enhancements of perf 0.8.1 and performance 0.3.1

2016-11-02 Thread Victor Stinner
Hum, so for an usability point of view, I think that the best to do is to ignore the option if Python has a JIT. On CPython, --duplicate makes sense (no?). So for example, the following command should use duplicate on CPython but not on PyPy: python2 -m perf timeit '[1,2]*1000' --duplicate=100

Re: [Speed] Latest enhancements of perf 0.8.1 and performance 0.3.1

2016-11-02 Thread Victor Stinner
2016-11-02 15:20 GMT+01:00 Armin Rigo : > Is that really the kind of examples you want to put forward? I am not a big fan of timeit, but we must use it sometimes to micro-optimizations in CPython to check if an optimize really makes CPython faster or not. I am only trying to enhance timeit. Unders

[Speed] Tune the system the run benchmarks

2016-11-02 Thread Victor Stinner
Hi, Last months, I used various shell and Python scripts to tune a system to run benchmarks. There are many parameters to be set to "fully" configure a Linux: * Turbo Boost of Intel CPU * CPU scaling governor * CPU speed * Isolate CPU * Disable kernel RCU on isolated CPUs * etc. I added a new "

[Speed] New benchmarks results on speed.python.org

2016-11-04 Thread Victor Stinner
Hi, Good news, I regenerated all benchmark results of CPython using the latest versions of perf and perfomance and the results look much more reliable. Sadly, I didn't kept a screenshot of old benchmarks, so you should trust me, I cannot show you the old unstable timeline. -- I regenerated all b

Re: [Speed] Benchmarks: Comparison between Python 2.7 and Python 3.6 performance

2016-11-04 Thread Victor Stinner
2016-11-04 20:18 GMT+01:00 Miquel Torres : > Nice! For the record, I'll be giving a talk in PyCon Ireland about > Codespeed. Would you mind me citing those tweets and screenshots, to > highlight usage on speed.python.org? Sure. Keep me in touch in you publish your slides later. > You mentioned n

Re: [Speed] Benchmarks: Comparison between Python 2.7 and Python 3.6 performance

2016-11-04 Thread Victor Stinner
2016-11-04 20:21 GMT+01:00 Yury Selivanov : > I'm curious why call_* benchmarks became slower on 3.x? It's almost the same between 2.7 and default. For 3.6, it looks like an issue on the benchmark runner, not on Python itself: >> Please ignore call_method, call_method_slots, call_method_unknown >

[Speed] Performance difference in call_method()

2016-11-04 Thread Victor Stinner
Hi, I noticed a temporary performance peak in the call_method: https://speed.python.org/timeline/#/?exe=4&ben=call_method&env=1&revs=50&equid=off&quarts=on&extr=on The difference is major: 17 ms => 29 ms, 70% slower! I expected a temporary issue on the server used to run benchmarks, but... I re

Re: [Speed] Performance difference in call_method()

2016-11-04 Thread Victor Stinner
I found some interesting differences using the Linux perf tool. # perf stat -e L1-icache-loads,L1-icache-load-misses ./python performance/benchmarks/bm_call_method.py --inherit=PYTHONPATH -v --worker -l1 -n 25 -w0 2016-11-04 23:35 GMT+01:00 Victor Stinner : > (1) ce85a1f129e3: 17

Re: [Speed] Performance difference in call_method()

2016-11-04 Thread Victor Stinner
I proposed a patch which fixes the issue: http://bugs.python.org/issue28618 "Decorate hot functions using __attribute__((hot)) to optimize Python" Victor ___ Speed mailing list Speed@python.org https://mail.python.org/mailman/listinfo/speed

Re: [Speed] Benchmarks: Comparison between Python 2.7 and Python 3.6 performance

2016-11-04 Thread Victor Stinner
2016-11-04 21:58 GMT+01:00 Victor Stinner : > 2016-11-04 20:21 GMT+01:00 Yury Selivanov : >> I'm curious why call_* benchmarks became slower on 3.x? > > It's almost the same between 2.7 and default. For 3.6, it looks like > an issue on the benchmark runner, not on P

Re: [Speed] Latest enhancements of perf 0.8.1 and performance 0.3.1

2016-11-05 Thread Victor Stinner
2016-11-05 15:56 GMT+01:00 Nick Coghlan : > Since the use case for --duplicate is to reduce the relative overhead > of the outer loop when testing a micro-optimisation within a *given* > interpreter, perhaps the error should be for combining --duplicate and > --compare-to at all? And then it would

Re: [Speed] Ubuntu 16.04 speed issues

2016-11-10 Thread Victor Stinner
Hello, > The OpenStack-Ansible project has noticed that performance on Ubuntu 16.04 is > quite significantly slower than on 14.04. > At the moment it's looking like *possibly* a GCC related bug. Is it exactly the same Python version? What is the full version? Try to get compiler flags: python2

[Speed] Analysis of a Python performance issue

2016-11-18 Thread Victor Stinner
Hi, I'm happy because I just finished an article putting the most important things that I learnt this year on the most silly issue with Python performance: code placement. https://haypo.github.io/analysis-python-performance-issue.html I explain how to debug such issue and my attempt to fix it in

Re: [Speed] Analysis of a Python performance issue

2016-11-19 Thread Victor Stinner
Le 19 nov. 2016 21:29, "serge guelton" a écrit : > Thanks *a lot* victor for this great article. You not only very > accurately describe the method you used to track the performance bug, > but also give very convincing results. You're welcome. I'm not 100% sure that adding the hot attrbute makes

[Speed] speed.python.org: recent issues to run benchmarks

2017-01-02 Thread Victor Stinner
Hi, tl;dr I'm trying to run benchmarks with PGO, but I get new errors, so speed.python.org is currently broken. Last december, I upgraded the speed-python server (server used to run benchmarks for CPython) from Ubuntu 14.04 (LTS) to 16.04 (LTS) to be able to compile Python using PGO compilation.

Re: [Speed] speed.python.org: recent issues to run benchmarks

2017-01-03 Thread Victor Stinner
2017-01-03 0:56 GMT+01:00 Victor Stinner : > I'm now trying to run benchmarks one more time... ;-) Good news: results are slowly being uploaded to https://speed.python.org/ It takes 50 minutes to benchmark one revision: first compilation, run the test suite to train the compiler, re

Re: [Speed] Running pyperformance on Windows

2017-01-16 Thread Victor Stinner
Hi Peter, Thank you for your bug report. The bug is a recent regression in the perf module. I just fixed it with the newly released perf 0.9.3. http://perf.readthedocs.io/en/latest/changelog.html#version-0-9-3-2017-01-16 I also released performance 0.5.1 which now uses perf 0.9.3. By the way, I f

[Speed] Slides and video of my "How to run a stable benchmark" talk at FOSDEM

2017-02-07 Thread Victor Stinner
Hi, I annoyed many of you on this mailing list with all my WTF performance issues. I consider that I now succeeded to get benchmarks stable enough to become "usable" (reliable). Two days ago, I gave a talk "How to run a stable benchmark" at FOSDEM (Brussels, Belgium) on my findings. Slides and vi

  1   2   >