Pamene kusintha kwa chilengedwe kufulumizitsa ndondomekoyi ndi nthawi 40

Lero tikufuna kulankhula za zosintha zaposachedwa kwambiri za Sherlock system [ichi ndi gulu lapamwamba kwambiri ku yunivesite ya Stanford - pafupifupi. trans.], zomwe zimafulumizitsa kwambiri kusanja mafayilo mumakanema okhala ndi zolembera zambiri.

Mosiyana ndi zolemba zanthawi zonse, ili ndi lipoti lamkati la momwe timagwirira ntchito pafupipafupi pa Sherlock kuti iziyenda bwino kwa ogwiritsa ntchito. Tikuyembekeza kufalitsa nkhani zambiri ngati izi mtsogolomu.

Kulemba mafayilo ambiri kumatenga nthawi

Zonse zinayamba ndi funso lothandizira luso kuchokera kwa wogwiritsa ntchito. Iye anafotokoza vuto kuti kuphedwa ls zimatenga mphindi zochepa mu bukhu lokhala ndi zolembera zopitilira 15 $SCRATCH [chilolezo cha mafayilo osakhalitsa - pafupifupi. njira].

Mafayilo masauzande ambiri mu bukhu limodzi nthawi zambiri amakhala olemetsa pamafayilo ndipo sizovomerezeka. Wogwiritsa adadziwa izi ndipo adavomereza kuti sizinali zabwino, koma adanena kuti mndandandawo unali wofulumira nthawi 1000 pa laputopu yake kuposa Sherlock. Ndithudi, zimenezi zinatipweteka. Kotero ife tinayang'ana mozama.

Chifukwa ndikuwoneka bwino

Tinayang'ana zomwe imachita ls polemba ndandanda, ndi chifukwa chake ndondomekoyi imatenga nthawi yayitali. Pa zogawa zamakono zambiri ls mwachisawawa imayenda ngati ls --color=auto, chifukwa aliyense amakonda mitundu.

Koma mitundu yokongola imabwera pamtengo: pa fayilo iliyonse ls ayenera kupeza zambiri za mtundu wa fayilo, zilolezo zake, mbendera, mawonekedwe owonjezera ndi zina zotero kuti asankhe mtundu woyenera.

Njira imodzi yosavuta yothetsera vutoli ndikuyimitsa mtundu mu ls palimodzi, koma taganizirani kukwiya kwa ogwiritsa ntchito. Mulimonsemo musachotse zotulutsa zamtundu, sitiri zilombo.

Kotero ife tinayang'ana mozama. ls zolemba zamitundu kudzera pazosintha zachilengedwe LS_COLORS, yomwe yakhazikitsidwa dircolors(1) kutengera fayilo yosinthira dir_colors(5)... Inde, zomwe zingagwiritsidwe ntchito zimawerengera fayilo yosinthika kuti ipange kusintha kwa chilengedwe, komwe kumagwiritsira ntchito (ndipo ngati simukudziwa za mafayilo ndi (chitani), ndiye dir_colors idzagwira ntchito, Ngakhale zilizonse).

Tiyeni tione bwinobwino

Kuti tiwone mtundu wamtundu womwe umayambitsa kuchepa, tidapanga malo oyesera:

$ 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

Masekondi 12,7 kwa mafayilo 10, osati abwino kwambiri.

Mwa njira, tikufuna mbendera --color=always: ngakhale amatembenukira kwa ls --color=auto, koma ls imazindikira ngati sichinalumikizidwe ndi cholumikizira (mwachitsanzo ndi chitoliro kapena ndi njira yoloweranso) ndikuyimitsa utoto ngati yakhazikitsidwa auto. Munthu wochenjera.

Ndiye chikutenga nthawi yayitali bwanji? Tinayang'ana ndi 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
[...]

Uwu: mafoni 10 lstat(), mafoni 10 getxattr() (zomwe zonse zimalephera chifukwa chilengedwe chathu chilibe zomwe ls akufuna), mafoni 10 capget().

Ndithudi izi zikhoza kukonzedwa bwino.

Kuthekera? Ayi

Kutsatira malangizo cholakwika kuyambira zaka 10 zapitazo, tinayesa kuletsa kuyang'ana mawonekedwe Zikhoza:

$ 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, mpaka 8 masekondi othamanga! Tinachotsa mafoni onse okwera mtengowo getxattr(), ndi zovuta capget() zinasowanso, kwambiri.

Koma pali mafoni okwiyitsa awa lstat(), Ngakhale…

Mukufuna maluwa angati?

Choncho, tinayang'anitsitsa LS_COLORS.

Choyamba tidangoyimitsa kusinthaku:

$ 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

Chani!?! Padakali 13 seconds?

Iwo likukhalira kuti pamene chilengedwe variable LS_COLORS chimodzi chokha mwa zinthu zake sichinafotokozedwe kapena chikusowa <type>=color:, imagwiritsa ntchito nkhokwe zomangidwa mwachisawawa ndipo imagwiritsabe ntchito mitundu. Chifukwa chake ngati mukufuna kuletsa mitundu yamtundu wina wa fayilo, muyenera kuyisintha <type>=: kapena <type> 00 mu file DIR_COLORS.

Pambuyo poyesa ndi zolakwika zambiri, tinachepetsa kusaka kwathu mpaka izi:

EXEC 00
SETUID 00
SETGID 00
CAPABILITY 00

chomwe chalembedwa ngati

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

Izi zikutanthauza kuti: osasankha mafayilo potengera mawonekedwe. Zikhoza, koma pang'onopang'ono setuid/setgid, pa executable mbendera.

Timafulumira ls

Ndipo ngati simuchita chilichonse mwa macheke awa, imbani lstat() kutha, ndipo tsopano ndi nkhani yosiyana kwambiri:

$ 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

Masekondi 0,3 pamndandanda wamafayilo 10, mbiri.

Kupanga Sherlock

Kuyambira masekondi 13 okhala ndi zosintha zosasintha mpaka masekondi 0,3 ndi zosintha zazing'ono LS_COLORS kumatanthauza kuthamangitsidwa kwa 40 chifukwa cha kusakhalapo setuid / setgid ndi mafayilo osinthika amitundu. Osati kutaya kwakukulu chotero.

Zachidziwikire, izi zakhazikitsidwa ku Sherlock kwa aliyense wogwiritsa ntchito.

Koma ngati mukufuna kubweza utoto, mutha kubwereranso kumakonzedwe osasintha:

$ unset LS_COLORS

Koma pamakalozera omwe ali ndi mafayilo ambiri, onetsetsani kuti mwapanga khofi ikugwira ntchito ls.

Source: www.habr.com

Kuwonjezera ndemanga