Re: Git migration: subdirs under packages/

2012-06-25 Thread Jan Rękorajski
Small suggestion - add ability to slug.py to work with package(s)
in a one level hash directories based on the first letter
of package name, like this:

packages/[0-9A-Za-z]/package dir

Rationale: having entire packages checked out is RPITA, entering/listing
packages/ directory is painfully slow - much slower than with CVS.
One level hash will greatly speedup things.

-- 
Jan Rękorajski | PLD/Linux
SysAdm | http://www.pld-linux.org/
bagginsatmimuw.edu.pl
bagginsatpld-linux.org
___
pld-devel-en mailing list
pld-devel-en@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-devel-en


Re: Git migration: subdirs under packages/

2012-06-25 Thread Paweł Sikora
On Monday 25 of June 2012 18:52:32 Jan Rękorajski wrote:
 Small suggestion - add ability to slug.py to work with package(s)
 in a one level hash directories based on the first letter
 of package name, like this:
 
 packages/[0-9A-Za-z]/package dir
 
 Rationale: having entire packages checked out is RPITA, entering/listing
 packages/ directory is painfully slow - much slower than with CVS.
 One level hash will greatly speedup things.

this is a bad workaround. the core problem is in glibc's readdir()
which calls getdents syscall multiple times with small 32k buffer.
e.g, for rpm/packages, `ls -1` produces:

(...)
getdents(3, /* 913 entries */, 32768)   = 32760
getdents(3, /* 911 entries */, 32768)   = 32744
getdents(3, /* 914 entries */, 32768)   = 32736
getdents(3, /* 906 entries */, 32768)   = 32760
getdents(3, /* 919 entries */, 32768)   = 32752
getdents(3, /* 919 entries */, 32768)   = 32768
getdents(3, /* 917 entries */, 32768)   = 32744
getdents(3, /* 919 entries */, 32768)   = 32744
getdents(3, /* 917 entries */, 32768)   = 32744
getdents(3, /* 907 entries */, 32768)   = 32728
getdents(3, /* 915 entries */, 32768)   = 32736
getdents(3, /* 918 entries */, 32768)   = 32752
getdents(3, /* 918 entries */, 32768)   = 32744
getdents(3, /* 921 entries */, 32768)   = 32752
getdents(3, /* 907 entries */, 32768)   = 32752
getdents(3, /* 465 entries */, 32768)   = 16784
getdents(3, /* 0 entries */, 32768) = 0
(...)

___
pld-devel-en mailing list
pld-devel-en@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-devel-en


Re: Git migration: subdirs under packages/

2012-06-25 Thread Paweł Sikora
On Monday 25 of June 2012 19:43:42 Paweł Sikora wrote:
 On Monday 25 of June 2012 18:52:32 Jan Rękorajski wrote:
  Small suggestion - add ability to slug.py to work with package(s)
  in a one level hash directories based on the first letter
  of package name, like this:
  
  packages/[0-9A-Za-z]/package dir
  
  Rationale: having entire packages checked out is RPITA, entering/listing
  packages/ directory is painfully slow - much slower than with CVS.
  One level hash will greatly speedup things.
 
 this is a bad workaround. the core problem is in glibc's readdir()
 which calls getdents syscall multiple times with small 32k buffer.
 e.g, for rpm/packages, `ls -1` produces:
 
 (...)
 getdents(3, /* 913 entries */, 32768)   = 32760
 getdents(3, /* 911 entries */, 32768)   = 32744
 getdents(3, /* 914 entries */, 32768)   = 32736
 getdents(3, /* 906 entries */, 32768)   = 32760
 getdents(3, /* 919 entries */, 32768)   = 32752
 getdents(3, /* 919 entries */, 32768)   = 32768
 getdents(3, /* 917 entries */, 32768)   = 32744
 getdents(3, /* 919 entries */, 32768)   = 32744
 getdents(3, /* 917 entries */, 32768)   = 32744
 getdents(3, /* 907 entries */, 32768)   = 32728
 getdents(3, /* 915 entries */, 32768)   = 32736
 getdents(3, /* 918 entries */, 32768)   = 32752
 getdents(3, /* 918 entries */, 32768)   = 32744
 getdents(3, /* 921 entries */, 32768)   = 32752
 getdents(3, /* 907 entries */, 32768)   = 32752
 getdents(3, /* 465 entries */, 32768)   = 16784
 getdents(3, /* 0 entries */, 32768) = 0
 (...)

...and the major performance issue is the `mc` listing algorithm for custom view
with the 'size' column. it finally calls the lstat() for each entry (~15k 
times).

___
pld-devel-en mailing list
pld-devel-en@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-devel-en