Hello
I have a long-term problem with loading of packages. Compilation takes very long time on my Windows PCs. On desktop it takes "only" double amount of time in comparison with linux, but on notebook, it is more than 10 times slower. Desktop has Windows 7 Ultimate 64-bit and notebook PC with Windows 7 Home Premium 64-bit, both have somehow similar specs (4-6 years old dual-core processors on 2,9 and 2,4 GHz), similar software, both have magnetic HDDs. I believe it used to take very long time on my notebook too, but I tried opening Pharo there again and it was somehow OK, but I'm not aware of any major change which could have caused it ... I mean... a lot changes on my PCs, but I can't remember anything which could directly affect it. Following "benchmarks" are both on same (copy paste) of VM - Windows VM 453 from 2015-06-18. Both on clean image 50141. All tested in as much as similar conditions as possible with everything else (possible) turned off. However, it used to be slow like that for a long time on multiple previous VMs and images since I can even remember (which is about a year). [ Gofer new configurationOf: 'Roassal2'; url: 'http://smalltalkhub.com/mc/ObjectProfile/Roassal2/main/'; loadDevelopment. ] timeToRun inspect. Desktop: 386 s. Notebook: 48 s. Linux in VM on notebook: 27 s. |results| results := OrderedCollection new. 20 timesRepeat: [results add: (Float readFrom: [ Object compile: 'a'. ] bench)]. ('compilations per second - avg: ', results average asString, ', min: ', results min asString, ', max: ', results max asString) inspect. Notebook: compilations per second - avg: 217.7153, min: 5.0, max: 247.258 Desktop: compilations per second - avg: 23.1337, min: 19.448, max: 28.155 Linux in VM on notebook: compilations per second - avg: 529.0066600000001, min: 5.0, max: 573.97 I tried turning off antivirus, turning off file indexing, praying to multiple gods, but with no success. I will appreciate any help. Jan |
I've had also bad results on windows... Windows XP 32bit (VirtualBox) - 178.200 (compilations per second)compared to Ubuntu 32bit (VirtualBox) - 694.932 Debian 64bit (host) - 669.932 I had also had experience with Git handling small files on windows was incredibly slow... so maybe it has something to do with disk writes? What exactly is happening when a method is compiled? A write to changes browser, to the image, parsing, ...? Peter On Mon, Jun 29, 2015 at 7:52 PM, Jan Blizničenko <[hidden email]> wrote: Hello |
In reply to this post by Jan Blizničenko
And one another benchmark of linux in VM on that desktop PC:
Roassal loading - 58 s compilations per second - avg: 262.4682, min: 257.194, max: 289.684 ...so the desktop PC is capable of better result and problem is somewhere in Windows, which I was afraid of... I'd also like to add to previous Windows tests that with antivirus turned on everything takes more time approximately by half of original time. Jan
|
What about "1 tinyBenchmarks" ? Just to know if the VM is slower as a whole or only compilation / source access ? 2015-06-30 0:36 GMT+02:00 Jan Blizničenko <[hidden email]>: And one another benchmark of linux in VM on that desktop PC: |
2015-06-30 3:17 GMT+02:00 Clément Bera <[hidden email]>:
most time is spend on primitives FilePrimitives are slow on windows.
|
Windows XP
1011857707 bytecodes/sec; 132044070 sends/sec Debian 1172295363 bytecodes/sec; 144744207 sends/sec But I think taking the compile: method apart tells a better story ~~~~~~~~~~~~~~~~~~~ code := 'a'. method := Object compiler source: code; requestor: nil; failBlock: [ ^nil ]; compile. all := [ Object compile: code. ]. compile := [ Object compiler source: code; requestor: nil; failBlock: [ ^nil ]; compile. ]. store := [ method putSource: code inFile: 2 withPreamble: [:f | f cr; nextPut: $!; nextChunkPut: 'Behavior method'; cr]. ]. add := [ Object addSelector: method selector withMethod: method notifying: nil. ]. ~~~~~~~~~~~~~~~~~~~ Windows XP: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ all bench. "'183.763 per second'" compile bench. "'10,729 per second'" store bench. "'286.170 per second'" add bench. "'697.883 per second'" ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Debian ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ all bench. "'622.551 per second'" compile bench. "'11,129 per second'" store bench. "'41,604 per second'" add bench. "'787.885 per second'" ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 150x slower disk operations? -_- I mean for normal programming this doesn't really matter, but when we are downloading even medium-sized package it takes ages to process... Peter |
In reply to this post by Clément Béra
Good idea. Results are...
desktop: 664 503 569 bytecodes/sec; 837 14 077 sends/sec. Linux in VM on desktop: 716 083 916 bytecodes/sec; 74 030 622 sends/sec notebook: 1 114 861 186 bytecodes/sec; 148 958 012 sends/sec ...results fluctuate by about 10 % on all systems when tried multiple times with some pauses between. It is right that notebook is almost two times faster (but not 10 times like with compilation), because it has more recent processor (Core i5 mobile vs Athlon 64 x2). Jan
|
In reply to this post by Peter Uhnak
I ran it in Pharo 4 (40616) because method putSource:inFile:withPreamble: no longer exists in Pharo 5 and results are:
Desktop... all: 13.062 per second compile: 6,603 per second (why the hell is there comma as separator and not dot?) store: 13.431 per second add: 406.400 per second Notebook... all: 210.180 per second compile: 12,007 per second store: 454.818 per second add: 806.239 per second Jan
|
Do you have antivirus running in windows that may be bothering with .changes? Please try temporary disable antivirus and try again. On Tue, Jun 30, 2015 at 4:25 AM, Jan Blizničenko <[hidden email]> wrote: I ran it in Pharo 4 (40616) because method putSource:inFile:withPreamble: no |
Unfortunately no - all benchmarks I made with antivirus disabled.
|
Can you think of any other window process that could be detecting changes all the time in .changes and therefore have an impact in the performance? Do you have such pharo image in dropbox or similar service? On Tue, Jun 30, 2015 at 9:37 AM, Jan Blizničenko <[hidden email]> wrote: Unfortunately no - all benchmarks I made with antivirus disabled. |
we really should get rid of the .changes file… it would simplify things a lot.
|
In reply to this post by Jan Blizničenko
On 30-06-15 14:37, Jan Blizničenko wrote:
> Unfortunately no - all benchmarks I made with antivirus disabled. Including the Microsoft stuff itself? (Security Essentials/Windows Defender) Does your desktop have a drive > 2TB? Stephan |
I would check the processes running and CPU of Windows while loading the code... On Tue, Jun 30, 2015 at 11:35 AM, Stephan Eggermont <[hidden email]> wrote: On 30-06-15 14:37, Jan Blizničenko wrote: |
In reply to this post by Jan Blizničenko
Silly question: do you have a couple of Nautilus windows open? Loading stuff generates annoucements and Nautilus updates are killing performance. Phil Le 30 juin 2015 00:36, "Jan Blizničenko" <[hidden email]> a écrit :
And one another benchmark of linux in VM on that desktop PC: |
On Tue, Jun 30, 2015 at 12:03 PM, [hidden email] <[hidden email]> wrote:
And previously TestRunner too (don;t know now)
|
I think we've safely established that the bottleneck is disk operations. Quoting from previous emails... store := [ method putSource: code inFile: 2 withPreamble: [:f | f cr; nextPut: $!; nextChunkPut: 'Behavior method'; cr]. ]. machine 1: Debian 64bit (laptop) store bench. 41604 per second Windows XP 32bit (virtualbox; host Debian) store bench. 286 per second Ubuntu 32bit (virtualbox; host Debian) store bench. 36604 per second machine 2: Windows 7 Ultimate 64-bit (desktop pc) store bench. 13 per second machine 3: Windows 7 Home Premium 64-bit (laptop) store bench. 454 per second all disks are HDD. On Tue, Jun 30, 2015 at 6:26 PM, Mariano Martinez Peck <[hidden email]> wrote:
|
> On 30 Jun 2015, at 18:36, Peter Uhnák <[hidden email]> wrote: > > I think we've safely established that the bottleneck is disk operations. Let's take it one level down then, [ 'foo.txt' asFileReference in: [ :file | file writeStreamDo: [ :out | 3 timesRepeat: [ out << String loremIpsum ] ]. file ensureDelete ] ] bench => "'512.595 per second'" We could experiment with variants, calling #flush, writing by character, adding buffering, etc, but this is a start. At least this takes the source code stuff out of the equations. > Quoting from previous emails... > > store := [ > method putSource: code inFile: 2 > withPreamble: [:f | f cr; nextPut: $!; nextChunkPut: 'Behavior method'; cr]. > ]. > > machine 1: > Debian 64bit (laptop) > store bench. 41604 per second > > Windows XP 32bit (virtualbox; host Debian) > store bench. 286 per second > > Ubuntu 32bit (virtualbox; host Debian) > store bench. 36604 per second > > machine 2: > Windows 7 Ultimate 64-bit (desktop pc) > store bench. 13 per second > > machine 3: > Windows 7 Home Premium 64-bit (laptop) > store bench. 454 per second > > all disks are HDD. > > On Tue, Jun 30, 2015 at 6:26 PM, Mariano Martinez Peck <[hidden email]> wrote: > > > On Tue, Jun 30, 2015 at 12:03 PM, [hidden email] <[hidden email]> wrote: > Silly question: do you have a couple of Nautilus windows open? > > Loading stuff generates annoucements and Nautilus updates are killing performance. > > > And previously TestRunner too (don;t know now) > > Phil > > Le 30 juin 2015 00:36, "Jan Blizničenko" <[hidden email]> a écrit : > And one another benchmark of linux in VM on that desktop PC: > Roassal loading - 58 s > compilations per second - avg: 262.4682, min: 257.194, max: 289.684 > ...so the desktop PC is capable of better result and problem is somewhere in > Windows, which I was afraid of... > > I'd also like to add to previous Windows tests that with antivirus turned on > everything takes more time approximately by half of original time. > > Jan > > > Jan Blizničenko wrote > > Desktop: 386 s. > > Notebook: 48 s. > > Linux in VM on notebook: 27 s. > > > > > > Notebook: compilations per second - avg: 217.7153, min: 5.0, max: 247.258 > > Desktop: compilations per second - avg: 23.1337, min: 19.448, max: 28.155 > > Linux in VM on notebook: compilations per second - avg: 529.0066600000001, > > min: 5.0, max: 573.97 > > > > > > -- > View this message in context: http://forum.world.st/Slow-compilation-on-one-of-my-Windows-PCs-tp4834668p4834713.html > Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com. > > > > > > -- > Mariano > http://marianopeck.wordpress.com > |
Debian (host) "'4,855 per second'" Ubuntu (vbox) "'4,709 per second'" The difference here is just one order of magnitude and not two... so maybe I should take apart CompileMethod>>putSource:inFile:withPreambule statement by statement. Is there some more convenient way to do it than wrap each statement in a block? Some way to profile a method or something. Peter On Tue, Jun 30, 2015 at 7:00 PM, Sven Van Caekenberghe <[hidden email]> wrote:
|
> On 30 Jun 2015, at 19:42, Peter Uhnák <[hidden email]> wrote: > > Debian (host) "'4,855 per second'" > > Ubuntu (vbox) "'4,709 per second'" > > Win XP (vbox) "'504.099 per second'" > > The difference here is just one order of magnitude and not two... so maybe I should take apart CompileMethod>>putSource:inFile:withPreambule statement by statement. > > Is there some more convenient way to do it than wrap each statement in a block? Some way to profile a method or something. Open the Time Profiler and write your expression there is how you do analysis on the whole tree. It is not perfect but should help you find the bottleneck. > Peter > > > > > On Tue, Jun 30, 2015 at 7:00 PM, Sven Van Caekenberghe <[hidden email]> wrote: > > > On 30 Jun 2015, at 18:36, Peter Uhnák <[hidden email]> wrote: > > > > I think we've safely established that the bottleneck is disk operations. > > Let's take it one level down then, > > [ 'foo.txt' asFileReference in: [ :file | > file writeStreamDo: [ :out | > 3 timesRepeat: [ out << String loremIpsum ] ]. > file ensureDelete ] ] bench > > => "'512.595 per second'" > > We could experiment with variants, calling #flush, writing by character, adding buffering, etc, but this is a start. At least this takes the source code stuff out of the equations. > > > Quoting from previous emails... > > > > store := [ > > method putSource: code inFile: 2 > > withPreamble: [:f | f cr; nextPut: $!; nextChunkPut: 'Behavior method'; cr]. > > ]. > > > > machine 1: > > Debian 64bit (laptop) > > store bench. 41604 per second > > > > Windows XP 32bit (virtualbox; host Debian) > > store bench. 286 per second > > > > Ubuntu 32bit (virtualbox; host Debian) > > store bench. 36604 per second > > > > machine 2: > > Windows 7 Ultimate 64-bit (desktop pc) > > store bench. 13 per second > > > > machine 3: > > Windows 7 Home Premium 64-bit (laptop) > > store bench. 454 per second > > > > all disks are HDD. > > > > On Tue, Jun 30, 2015 at 6:26 PM, Mariano Martinez Peck <[hidden email]> wrote: > > > > > > On Tue, Jun 30, 2015 at 12:03 PM, [hidden email] <[hidden email]> wrote: > > Silly question: do you have a couple of Nautilus windows open? > > > > Loading stuff generates annoucements and Nautilus updates are killing performance. > > > > > > And previously TestRunner too (don;t know now) > > > > Phil > > > > Le 30 juin 2015 00:36, "Jan Blizničenko" <[hidden email]> a écrit : > > And one another benchmark of linux in VM on that desktop PC: > > Roassal loading - 58 s > > compilations per second - avg: 262.4682, min: 257.194, max: 289.684 > > ...so the desktop PC is capable of better result and problem is somewhere in > > Windows, which I was afraid of... > > > > I'd also like to add to previous Windows tests that with antivirus turned on > > everything takes more time approximately by half of original time. > > > > Jan > > > > > > Jan Blizničenko wrote > > > Desktop: 386 s. > > > Notebook: 48 s. > > > Linux in VM on notebook: 27 s. > > > > > > > > > Notebook: compilations per second - avg: 217.7153, min: 5.0, max: 247.258 > > > Desktop: compilations per second - avg: 23.1337, min: 19.448, max: 28.155 > > > Linux in VM on notebook: compilations per second - avg: 529.0066600000001, > > > min: 5.0, max: 573.97 > > > > > > > > > > > > -- > > View this message in context: http://forum.world.st/Slow-compilation-on-one-of-my-Windows-PCs-tp4834668p4834713.html > > Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com. > > > > > > > > > > > > -- > > Mariano > > http://marianopeck.wordpress.com > > > > > |
Free forum by Nabble | Edit this page |