On Fri, Aug 19, 2011 at 12:08:16AM +0200, Piotr Karbowski wrote:
> Hi, I have pretty much the same issue, the first login after boot, to
> each user take about 8-9s.
>
> In order to check whats going on I changed my login shell to bash and did:
>
> zsh -x 2>&1 | tee zsh-startup.log
>
> In order to save logs and I careful watch what pop up onto screen. I
> have reproduced it few times, what you need to reproduce is reboot
> system or drop_cache (echo 3 > /proc/sys/vm/drop_caches) and then
> again run zsh as user.
That's a neat trick. It reproduces the behaviour for me every time.
It appears that building the command hash is the time consuming step.
Here's what I did:
1. I created /tmp/.zshrc containing only
print -P "${ZSH_NAME}-${ZSH_VERSION} ($ZSH_PATCHLEVEL)"
which dircolors
2. I executed the commands
sudo echo 3 > /proc/sys/vm/drop_caches
ZDOTDIR=/tmp zsh -xd 2>&1 | tee /tmp/zsh.log
I saw the output
+/etc/zsh/zshenv:15> [[ -z .:/home/gautam/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games || .:/home/gautam/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/games == /bin:/usr/bin ]]
+/tmp/.zshrc:1> print -P 'zsh-4.3.12 (Debian)'
zsh-4.3.12 (Debian)
+/tmp/.zshrc:3> which dircolors
/usr/bin/dircolors
Once "which dircolors" appears on screen, I see a long long long pause
(with the hard disk constantly spinning). After a long long long time, I
finally see the output (/usr/bin/dircolors) appear.
For comparison, I also executed the following
sudo echo 3 > /proc/sys/vm/drop_caches
sh
which dircolors
"sh" started instantly, and which dircolors executed instantly. I also
checked that under the above conditions, the PATH in both sh and zsh
were identical.
I've no idea why "which dircolors" takes such a long time on zsh (when
the cache is cleared), and runs instantly on sh. I'd appreciate any
help.
Thanks,
GI
--
Freedom of speech is wonderful - right up there with the freedom not to
listen.
Attachment:
signature.asc
Description: Digital signature