public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Tom Wijsman <TomWij@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Subject: Re: [gentoo-dev] Re: Packages up for grabs
Date: Tue, 25 Jun 2013 01:18:07 +0200	[thread overview]
Message-ID: <20130625011807.5a891b92@TOMWIJ-GENTOO> (raw)
In-Reply-To: <pan$23f2d$9004945f$576ee996$b7e282de@cox.net>

[-- Attachment #1: Type: text/plain, Size: 7584 bytes --]

On Mon, 24 Jun 2013 15:27:19 +0000 (UTC)
Duncan <1i5t5.duncan@cox.net> wrote:

> > I have one; it's great to help make my boot short, but it isn't
> > really a great improvement for the Portage tree. Better I/O isn't a
> > solution to computational complexity; it doesn't deal with the CPU
> > bottleneck.
> 
> But here, agreed with ciaranm, the cpu's not the bottleneck, at least
> not from cold-cache.  It doesn't even up the cpu clocking from
> minimum as it's mostly filesystem access.  Once the cache is warm,
> then yes, it ups the CPU speed and I see the single-core behavior you
> mention, but cold- cache, no way; it's I/O bound.
> 
> And with an ssd, the portage tree update (the syncs both of gentoo
> and the overlays) went from a /crawling/ console scroll, to scrolling
> so fast I can't read it.

We're not talking about the Portage tree update, but about the
dependency tree generation, which relies much more on the CPU than I/O.
A lot of loops inside loops inside loops, comparisons and more data
structure magic is going on; if this were optimized to be of a lower
complexity or be processed by multiple cores, this would speed up a lot.

Take a look at the profiler image and try to get a quick understanding
of the code; after following a few function calls, it will become clear.

Granted, I/O is still a part of the problem which is why I think caches
would help too; but from what I see the time / space complexity is just
too high, so you don't even have to deem this as CPU or I/O bound...

> >> Quite apart from the theory and question of making the existing
> >> code faster vs. a new from-scratch implementation, there's the
> >> practical question of what options one can actually use to deal
> >> with the problem /now/.
> > 
> > Don't rush it: Do you know the problem well? Does the solution
> > properly deal with it? Is it still usable some months / years from
> > now?
> 
> Not necessarily.  But first we must /get/ to some months / years from 
> now, and that's a lot easier if the best is made of the current 
> situation, while a long term fix is being developed.

True, we have make and use the most out of Portage as long as possible.

> >> FWIW, one solution (particularly for folks who don't claim to have
> >> reasonable coding skills and thus have limited options in that
> >> regard) is to throw hardware at the problem.
> > 
> > Improvements in algorithmic complexity (exponential) are much bigger
> > than improvements you can achieve by buying new hardware (linear).
> 
> Same song different verse.  Fixing the algorithmic complexity is fine
> and certainly a good idea longer term, but it's not something I can
> use at my next update.  Throwing hardware at the problem is usable
> now.

If you have the money; yes, that's an option.

Though I think a lot of people see Linux as something you don't need to
throw a lot of money at; it should run on low end systems, and that's
kind of the type of users we shouldn't just neglect going forward.

> >> [2] ... SNIP ... runs ~1 hour ... SNIP ...
> > 
> > Sounds great, but the same thing could run in much less time. I have
> > worse hardware, and it doesn't take much longer than yours do; so, I
> > don't really see the benefits new hardware bring to the table. And
> > that HDD to SSD change, that's really a once in a lifetime flood.
> 
> I expect I'm more particular than most about checking changelogs.  I 
> certainly don't read them all, but if there's a revision-bump for 
> instance, I like to see what the gentoo devs considered important
> enough to do a revision bump.  And I religiously check portage logs,
> selecting mentioned bug numbers probably about half the time, which
> pops up a menu with a gentoo bug search on the number, from which I
> check the bug details and sometimes the actual git commit code.  For
> all my overlays I check the git whatchanged logs, and I have a helper
> script that lets me fetch and then check git whatchanged for a number
> of my live packages, including openrc (where I switched to live-git
> precisely /because/ I was following it closely enough to find the git
> whatchanged logs useful, both for general information and for
> troubleshooting when something went wrong -- release versions simply
> didn't have enough resolution, too many things changing in each
> openrc release to easily track down problems and file bugs as
> appropriate), as well.

I stick more to releases and checking the changes for things where I
want to know the changes for; for the others, they either don't matter
or they shouldn't really hurt as a surprise. If there's something that
would really surprise me then I'd expect some news on that.

> And you're probably not rebuilding well over a hundred live-packages 
> (thank $DEITY and the devs in question for ccache!) at every update,
> in addition to the usual (deep) @world version-bump and newuse
> updates, are you?

Developers rebuild those to see upcoming breakage.

Apart from that, I don't use many -9999 as to not go too unstable.

> >> [3] Also relevant, 16 gigs RAM, PORTAGETMPDIR on tmpfs.
> > 
> > Sounds all cool, but think about your CPU again; saturate it...
> > 
> > Building the Linux kernel with `make -j32 -l8` versus `make -j8` is
> > a huge difference; most people follow the latter instructions,
> > without really thinking through what actually happens with the
> > underlying data. The former queues up jobs for your processor; so
> > the moment a job is done a new job will be ready, so, you don't
> > need to wait on the disk.
> 
> Truth is, I used to run a plain make -j (no number and no -l at all)
> on my kernel builds, just to watch the system stress and then so
> elegantly recover.  It's an amazing thing to watch, this Linux kernel
> thing and how it deals with cpu oversaturation.  =:^)

If you have the memory to pull it off, which involves money again.

> But I suppose I've gotten more conservative in my old age. =:^P  

> Needlessly oversaturating the CPU (and RAM) only slows things down
> and forces cache dump and swappage.

The trick is to set it a bit before the point of oversaturating; low
enough so most packages don't oversaturize, it could be put more
precisely for every package but that time is better spent elsewhere

> > Something completely different; look at the history of data mining,
> > today's algorithms are much much faster than those of years ago.
> > 
> > Just to point out that different implementations and configurations
> > have much more power in cutting time than the typical hardware
> > change does.
> 
> I agree and am not arguing that.  All I'm saying is that there are 
> measures that a sysadmin can take today to at least help work around
> the problem, today, while all those faster algorithms are being
> developed, implemented, tested and deployed. =:^)

Not everyone is a sysadmin with a server; I'm just a student running a
laptop bought some years ago, and I'm kind of the type that doesn't
replace it while it still works fine otherwise. Maybe when I graduate...

I think we can both agree a faster system does a better job at it; but
they won't deal with crux of the problem, the algorithmic complexity.

Dealing with both, as you mention, is the real deal.

-- 
With kind regards,

Tom Wijsman (TomWij)
Gentoo Developer

E-mail address  : TomWij@gentoo.org
GPG Public Key  : 6D34E57D
GPG Fingerprint : C165 AF18 AB4C 400B C3D2  ABF0 95B2 1FCD 6D34 E57D

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 490 bytes --]

  reply	other threads:[~2013-06-24 23:21 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-16  9:49 [gentoo-dev] Packages up for grabs Pacho Ramos
2013-06-16 12:48 ` Dirkjan Ochtman
2013-06-16 13:55   ` Brian Dolbec
2013-06-16 14:44     ` Tom Wijsman
2013-06-16 17:09       ` Brian Dolbec
2013-06-16 17:21         ` Pacho Ramos
2013-06-16 17:27           ` hasufell
2013-06-16 18:28             ` Tom Wijsman
2013-06-16 18:21           ` Brian Dolbec
2013-06-16 18:23           ` Tom Wijsman
2013-06-16 19:33             ` [gentoo-dev] " Duncan
2013-06-16 19:43               ` Andreas K. Huettel
2013-06-16 21:24               ` Tom Wijsman
2013-06-16 21:38                 ` Ciaran McCreesh
2013-06-16 22:07                   ` Tom Wijsman
2013-06-16 22:20                     ` Ciaran McCreesh
2013-06-24 15:27                 ` Duncan
2013-06-24 23:18                   ` Tom Wijsman [this message]
2013-06-25  6:16                     ` Duncan
2013-06-16 19:43             ` [gentoo-dev] " Ciaran McCreesh
2013-06-16 21:57             ` Zac Medico
2013-06-16 22:15               ` Ciaran McCreesh
2013-06-16 21:13     ` Tim Harder
2013-06-17  0:52 ` Rafael Goncalves Martins
2013-06-17  5:16 ` Sergey Popov
2013-06-17  5:25   ` Brian Harring
2013-06-17 20:32 ` vivo75
  -- strict thread matches above, loose matches on Subject: below --
2018-03-10 13:12 Pacho Ramos
2018-03-10 23:53 ` [gentoo-dev] " Michael Palimaka
2017-04-27 10:58 [gentoo-dev] " Dirkjan Ochtman
2017-06-28  9:19 ` [gentoo-dev] " Dirkjan Ochtman
2017-03-26 19:50 [gentoo-dev] " aidecoe
2017-03-27  8:13 ` [gentoo-dev] " Marek Szuba
2016-08-07  9:26 [gentoo-dev] " Pacho Ramos
2016-08-07 15:50 ` [gentoo-dev] " Michael Palimaka
2016-08-06 14:39 Felix Janda
2016-08-06 16:04 ` Peter Stuge
2016-08-06 16:22   ` Michał Górny
2016-08-06 19:28     ` Peter Stuge
2016-08-06 20:47       ` Rich Freeman
2016-08-06 20:55         ` Michał Górny
2016-08-06 22:32           ` Rich Freeman
2016-08-06 21:12       ` Peter Stuge
2016-08-07  6:48         ` Michał Górny
2016-08-07  7:38           ` Consus
2016-08-07 13:24             ` james
2016-08-07 13:32               ` Kent Fredric
2016-08-07 14:06                 ` Alan McKinnon
2016-08-07 14:46                   ` Alec Ten Harmsel
2016-08-07 17:36                   ` james
2016-08-07 20:04                     ` Alan McKinnon
2016-08-07 20:48                       ` Patrick Lauer
2016-08-07 22:29                         ` james
2016-08-07 21:49                       ` james
2016-08-08  3:22                         ` Kent Fredric
2016-08-08  5:26                           ` james
2016-08-08  4:33                             ` Kent Fredric
2016-08-08  5:43                               ` Kent Fredric
2016-08-07 17:24                 ` james
2016-08-07 16:21                   ` Ciaran McCreesh
2016-08-07 17:59                     ` james
2016-08-07 14:09               ` Consus
2016-08-07 17:44                 ` james
2016-08-07 14:47               ` Rich Freeman
2016-08-07 17:47                 ` james
2016-08-07 17:49                   ` Rich Freeman
2016-08-07 19:33                     ` james
2016-08-07  4:04       ` Kent Fredric
2016-06-02 15:42 [gentoo-dev] " james
2016-06-03 17:02 ` [gentoo-dev] " Justin Bronder
2016-06-03 18:41   ` james
2014-11-24  1:17 [gentoo-dev] " hasufell
2014-11-24  3:08 ` Daniel Campbell
2014-11-26  9:15   ` Yixun Lan
2014-11-27  9:51     ` Daniel Campbell
2014-12-03 16:34       ` [gentoo-dev] " Harvey
2014-12-04  6:17         ` Daniel Campbell
2014-11-11 14:59 [gentoo-dev] " Pavlos Ratis
2014-11-14  3:02 ` Tom Wijsman
2014-12-01 11:00   ` Pacho Ramos
2015-01-07 14:06     ` Pacho Ramos
2015-01-08  1:29       ` Andrew Savchenko
2015-01-08  9:28         ` [gentoo-dev] " Duncan
2015-01-08 10:12           ` Duncan
2013-06-16 10:03 [gentoo-dev] " Pacho Ramos
2013-06-16 10:24 ` [gentoo-dev] " Pacho Ramos
2013-06-16  9:31 [gentoo-dev] " Pacho Ramos
2013-06-16 12:19 ` gmt
2013-06-16 12:27   ` Pacho Ramos
2013-06-16 13:02     ` gmt
2013-06-16 13:22       ` [gentoo-dev] " Michael Palimaka
2013-01-20 10:30 [gentoo-dev] " Pacho Ramos
2013-01-20 19:15 ` [gentoo-dev] " Mike Gilbert
2012-03-01 22:17 [gentoo-dev] " Markos Chandras
2012-03-06  4:40 ` [gentoo-dev] " Ryan Hill
2011-01-06 12:17 [gentoo-dev] " Christian Faulhammer
2011-01-06 12:32 ` Dirkjan Ochtman
2011-01-12  9:24   ` [gentoo-dev] " Christian Faulhammer
2011-01-06 17:34 ` [gentoo-dev] " Sebastian Pipping
2011-01-07  8:49   ` [gentoo-dev] " Christian Faulhammer
2011-01-07 16:39     ` Sebastian Pipping
2011-01-07 18:57       ` Christian Faulhammer
2010-10-10 14:45 [gentoo-dev] " Markos Chandras
2010-10-10 16:13 ` [gentoo-dev] " Diego Elio Pettenò
2010-10-12  0:52   ` Jeroen Roovers
2010-10-12  6:01     ` Duncan
2010-10-12 17:17       ` Tomás Touceda
2009-02-11 18:02 [gentoo-dev] " Santiago M. Mola
2009-02-12  3:12 ` [gentoo-dev] " Ryan Hill
2008-10-31 20:42 [gentoo-dev] packages " Daniel Drake
2008-11-09  8:39 ` [gentoo-dev] " Diego 'Flameeyes' Pettenò
2008-07-20  6:44 [gentoo-dev] Packages " Christian Faulhammer
2008-07-20 17:01 ` Alexis Ballier
2008-07-21  6:27   ` [gentoo-dev] " Christian Faulhammer
2008-07-20 18:21 ` [gentoo-dev] " Thomas Anderson
2008-07-21  6:27   ` [gentoo-dev] " Christian Faulhammer
2008-05-31  5:09 [gentoo-dev] packages " Mike Frysinger
2008-05-31  8:05 ` Donnie Berkholz
2008-05-31  9:13   ` [gentoo-dev] " Tiziano Müller
2008-05-31 14:35 ` [gentoo-dev] " Philip Webb
2008-05-31 17:04   ` Thilo Bangert
2008-05-31 17:05     ` [gentoo-dev] " Ali Polatel
2008-05-31 15:33 ` Ali Polatel
2008-06-02 14:57 ` Diego 'Flameeyes' Pettenò
2008-06-02 19:47 ` Gunnar Wrobel
2008-06-02 20:45   ` Joe Peterson
2008-06-02 23:59     ` Joe Peterson
2008-05-28  7:03 [gentoo-dev] Packages " Krzysiek Pawlik
2008-06-05 20:57 ` [gentoo-dev] " Tiziano Müller
2007-12-25 18:19 [gentoo-dev] " Christian Heim
2007-12-26 10:16 ` Gilles Dartiguelongue
2007-12-26 15:39   ` [gentoo-dev] " Bernd Steinhauser
2008-01-24 15:30 ` Ali Polatel
2007-09-05 17:15 [gentoo-dev] " Chris Gianelloni
2007-09-05 17:44 ` [gentoo-dev] " Christian Faulhammer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130625011807.5a891b92@TOMWIJ-GENTOO \
    --to=tomwij@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox