Cum an environment variabilis velocitates in processu per 40 tempora

Hodie loqui volumus de aliquibus ultimis updates systematis Sherlock [hoc est botrus summus in Stanford University - approx. quae signanter accelerent fasciculi enumerationem in directoriis cum magno numero viscusrum.

Dissimiles regularibus articulis, hoc plus est nuntii in insider quam regulariter in Sherlock laboramus ut eam in usoribus nostris optime curramus. Speramus plura edicere capitula huiusmodi in futuro.

Multis files accipit tempus

Totum auxilium technicum cum quaestione ex usuario incepit. quaestionem dixit de executione ls paucis minutis in directorium cum supra 15 viscus in $SCRATCH [Directorium imaginum temporalium - approx. lane].

Milia files in uno directorio plerumque onus ponunt in ratio lima et certus non commendatur. Usor hoc scivit et confessus est non bonum esse, sed nominavit enumerationem 1000 vicibus velocius fuisse in laptop suo quam Sherlock. Nempe hoc nocuerunt nobis. Sic altius perspeximus.

Quia ls spectat delicatus

Inspeximus quid actu facit ls cum directorium enumeratis, et cur tamdiu processus accipit. De maxime modern distributionibus ls per default ut decurrit ls --color=autocolores enim quisque amat.

Sed colores pulchros pretio veniunt: nam omnis fasciculus ls informationem habere debet de tabella speciei, eius permissionibus, vexillis, attributis extensis et similibus ad colorem proprium eligendum.

Simplex solutio quaestionis est omnino disable color in ls, sed finge flagitium utentium. Nullatenus color output auferas, monstra non sumus.

Sic altius perspeximus. ls colorum entries per environment variabilis LS_COLORSquod positum dircolors(1) configuratione file fundatur dir_colors(5)... Ita, exsecutabile legit lima configurationem ut variabilis ambitus efficiatur, qui ls tunc utitur (Et si nescis de files ianua (Fac), tum dir_colors non operatur: quamquam omnia).

Sit scriptor propius inspicere

Uter color machinemur utram efficit tarditatem, ambitum experimentalem creavimus;

$ mkdir $SCRATCH/dont
$ touch $SCRATCH/dont/{1..10000} # don't try this at home!
$ time ls --color=always $SCRATCH/dont | wc -l
10000

real    0m12.758s
user    0m0.104s
sys     0m0.699s

12,7 secundis pro 10 fasciculis, non valde bonis.

Viam vexillum opus est --color=always: quamvis se vertit ad ls --color=autoautem ls detegit cum non cohaeret cum termino (exempli gratia per fistulam vel cum output redirectionem) et disables fuco si positi sunt auto. Callidus guy.

Quid igitur tam diu sumit? Vidimus cum strace:

$ strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 44.21    0.186617          19     10000           lstat
 42.60    0.179807          18     10000     10000 getxattr
 12.19    0.051438           5     10000           capget
  0.71    0.003002          38        80           getdents
  0.07    0.000305          10        30           mmap
  0.05    0.000217          12        18           mprotect
  0.03    0.000135          14        10           read
  0.03    0.000123          11        11           open
  0.02    0.000082           6        14           close
[...]

Wow: 10 vocat lstat(), 10 vocat getxattr() (quod omnes deficiunt quod nostrum ambitus attributa ls non habet quaerunt), 10 vocat capget().

Hoc certe ipsum fieri potest.

Facultates attribuunt? non

hoc consilium cimex ab X annosNos conatus disable attributum tenendo capabilities:

$ eval $(dircolors -b | sed s/ca=[^:]*:/ca=:/)
$ time strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 98.95    0.423443          42     10000           lstat
  0.78    0.003353          42        80           getdents
  0.04    0.000188          10        18           mprotect
  0.04    0.000181           6        30           mmap
  0.02    0.000085           9        10           read
  0.02    0.000084          28         3           mremap
  0.02    0.000077           7        11           open
  0.02    0.000066           5        14           close
[...]
------ ----------- ----------- --------- --------- ----------------
100.00    0.427920                 10221         6 total

real    0m8.160s
user    0m0.115s
sys     0m0.961s

Wow, usque ad 8 seconds accelerationis! Nos omnes qui vocatus eiecit pretiosa getxattr()ac provocat capget() nimis evanuit, magna.

Sed adhuc sunt haec molestissima vocat lstat()Etsi…

Quot flores tibi opus est?

Ergo propius aspectum cepimus LS_COLORS.

Primum hoc modo variabilis simpliciter erret:

$ echo $LS_COLORS
rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
$ unset LS_COLORS
$ echo $LS_COLORS

$  time ls --color=always $SCRATCH/dont | wc -l
10000

real    0m13.037s
user    0m0.077s
sys     0m1.092s

Quid est!?! Adhuc XIII seconds?

Evenit ut cum mauris varius LS_COLORS nisi unum ex elementis suis non definitur vel deest <type>=color:, constructo-in database per defaltam utitur et colore adhuc utitur. Si ergo vis colorizationem inactivare propter certum genus fasciculi, necesse est illud cum deprimi <type>=: aut <type> 00 in file DIR_COLORS.

Post multam probationem et errorem, inquisitionem nostram huc usque coartavimus;

EXEC 00
SETUID 00
SETGID 00
CAPABILITY 00

quod scriptum est

LS_COLORS='ex=00:su=00:sg=00:ca=00:'

Hoc significat: non colorat lima per attributum. capabilitiessed per partes setuid/setgidneque per exsecutability vexillum.

Nos accelerare ls

Et si hoc non feceris, tunc vocat lstat() evanescet et nunc res prorsus alia est;

$ export LS_COLORS='ex=00:su=00:sg=00:ca=00:'
$ time strace -c ls --color=always $SCRATCH/dont | wc -l
10000
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 63.02    0.002865          36        80           getdents
  8.10    0.000368          12        30           mmap
  5.72    0.000260          14        18           mprotect
  3.72    0.000169          15        11           open
  2.79    0.000127          13        10           read
[...]
------ ----------- ----------- --------- --------- ----------------
100.00    0.004546                   221         6 total

real    0m0.337s
user    0m0.032s
sys     0m0.029s

0,3 seconds in indice 10 tabularum, a record.

Occasus sursum Sherlock

Ex XIII seconds cum default occasus ad 13 seconds cum minor servandis LS_COLORS significat XL-complicare accelerationem ex absentia setuid / setgid et coloratis exsecutabile. Non tam magnum damnum.

Nempe hoc nunc in Sherlock configuratur pro sulum user.

Si colorantem reddere vis, simpliciter redire ad occasus defectus potes.

$ unset LS_COLORS

Sed tunc in directoriis cum multis documentis, cave ut capulus coquendam dum currit ls.

Source: www.habr.com