Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: Използване на нишки [Was: Re: lug-bg: Оптимизация]


  • Subject: Re: lug-bg: Използване на нишки [Was: Re: lug-bg: Оптимизация]
  • From: Peter Pentchev <roam@xxxxxxxxxxx>
  • Date: Fri, 3 Sep 2004 10:13:52 +0300

On Fri, Sep 03, 2004 at 09:56:25AM +0300, Peter Pentchev wrote:
> On Thu, Sep 02, 2004 at 08:36:26PM +0300, Peter StJ wrote:
> [snip]
> > prelink.. добра идея.. но при мен не видях никаква разлика. въпреки
> > тестовете.
> 
> Доста хора казват, че KDE и GNOME приложения се справят доста добре с
> prelink, вместо да зареждат по 1023 библиотеки при стартирането си и да
> resolve-ват всички символи в тях (а това няма как да не отнеме никакво
> време).
> 
> > NPTL? Абе ти случайно имаш ли приложение дето ползва нишки. Аз в
> > момента не се сещам да ползвам такова. 
> 
> Хмм.. малко по-нагоре в твоето съобщение видях това:
> 
> X-Mailer: Sylpheed version 0.9.11claws (GTK+ 1.2.10; i686-pc-linux-gnu)
> 
> Бас ловя, че това ползва нишки :)  Също както и всички GUI браузъри, и
> на практика повечето GUI приложения, а особено тези, които си играят и с
> мрежа.  Да не говорим вече за SQL сървъри, някои уеб-сървъри (не, Apache
> по принцип не ползва нишки, макар че Apache 2 с MPM може и да опитва), и
> какво ли не още.
> 
> Някой ден, като имаш малко време, пробвай нещо като следното (или на един
> ред, и ако го правиш като root, нямаш нужда от sudo):
> 
>   sudo find /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin /usr/X11R6/bin /usr/games -type f | sudo xargs file | awk -F: '/ELF.*dynamically.*shared libs/ {print $1}' | sudo xargs ldd | less
> 
> ...след което в изхода му потърси 'thread' и виж малко по-нагоре името
> на програмата - you might be surprised :)
> 
> Ако това беше FreeBSD, щях да ти кажа накрая вместо sudo xargs ldd |
> less да направиш sudo xargs ldd -f '%a\t%o\t%p\n' | fgrep thread, така
> че да показва на един ред името на програмата и името на библиотеката, и
> с този fgrep thread директно да се види за какво става дума, но
> изглежда, че при повечето Linux дистрибуции ldd не приема format
> argument :(  Под Linux можеш да симулираш нещо такова, като накрая
> направиш:
> 
>   sudo xargs ldd | awk '/^\// {prog=$1} /^\t.*thread/ {print prog $0}'
> 
> Т.е. цялата команда става:  
> 
>   sudo find /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin /usr/X11R6/bin /usr/games -type f | sudo xargs file | awk -F: '/ELF.*dynamically.*shared libs/ {print $1}' | sudo xargs ldd | awk '/^\// {prog=$1} /^\t.*thread/ {print prog $0}'
> 
> Или, ако ще е по-ясно, погледни приложеното скриптче, което прави
> същото.  Направо го пускаш, то се разхожда по системата ти и ти показва
> колко от програмите ти наистина използват нишки.
> 
> На всичкото отгоре може и да не успее да хване всички - примерно
> най-вероятно няма да успее да хване Mozilla, защото тя има някакви
> странни начини за изпълнение с shell script wrapper, който вика нещо
> друго, което пък на свой ред изпълнява истинската mozilla-bin, която пък
> изобщо не е в /usr/X11R6/bin, а някъде из lib/... пфу.  В такъв случай,
> и ако имаш още малко време, можеш да замениш в скриптчето SPATH='/bin
> /sbin...' с просто SPATH='/' и то ще претърси всичките ти файлови
> системи и всичките им директории за изпълними файлове във формат ELF.
> Ако искаш пък, можеш да го използваш за търсене на произволна
> библиотека, като просто му подадеш низ за търсене като параметър,
> например 'findlib.sh fontconfig' или нещо такова.  Ако не му подадеш
> никакви параметри, търси 'thread', което ще намери и libthread, и
> libpthread, и повечето други варианти.

А може би щеше да е добра идея да приложа и самото скриптче :)

Поздрави,
Петър

-- 
Peter Pentchev	roam@xxxxxxxxxxx    roam@xxxxxxxx    roam@xxxxxxxxxxx
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
You have, of course, just begun reading the sentence that you have just finished reading.
#!/bin/sh

LIBSEARCH=${1-'thread'}
SPATH='/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin /usr/X11R6/bin /usr/games'

# If you are executing this script as non-root, comment out this line:
SUDO=''
# ...and uncomment this one:
#SUDO='sudo'

${SUDO} find ${SPATH} -type f | ${SUDO} xargs file | \
awk -F: '/ELF.*dynamically.*shared libs/ {print $1}' | ${SUDO} xargs ldd | \
awk '/^\// {prog=$1} /^\t.*'"$LIBSEARCH"'/ {print prog $0}'

Attachment: pgpdc7nWHy6VG.pgp
Description: PGP signature



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.