Uma mensagem curiosa
Ao iniciar o Slackware com Xen pela primeira vez, recebi a seguinte mensagem:
*************************************************************** *************************************************************** ** WARNING: Currently emulating unsupported memory accesses ** ** in /lib/tls glibc libraries. The emulation is ** ** slow. To ensure full performance you should ** ** install a 'xen-friendly' (nosegneg) version of ** ** the library, or disable tls support by executing ** ** the following as root: ** ** mv /lib/tls /lib/tls.disabled ** ** Offending process: init (pid=1004) ** *************************************************************** ***************************************************************
Entretanto, para minha surpresa, não existia o arquivo indicado.
Consultando a documentação encontrei uma página que descreve e explica este problema. De acordo com o site, em plataformas x86, o Xen utiliza segmentação para prover proteção da memória usada para o hipervisor. Isso resulta em alguns problemas de desempenho já que seguimentos “wrap-around”, como os usados pela glibc, necessitam de um tratamento com custo maior de CPU maior. Para obter mais informações sobre como o Xen utiliza segmentação, veja XenSegments.
Para resolver esses problemas, em sistemas como RedHat, CentOS, Debian e Ubuntu, você pode simplesmente mover o arquivo, conforme o determinado na mensagem. No entanto, no Slackware é necessário recompilar e reinstalar a glibc.
Compilando a glibc para Slackware 12.2
Seguem os passos para a compilação da glibc.
wget ftp://ftp.slackware-brasil.com.br/slackware-12.2/source/l/glibc/*
Edite o arquivo glibc.SlackBuild e aplique o seguinte patch:
c8
< TMP=${TMP:-/glibc-tmp-$(mcookie)}
---
> TMP=$CDW/glibc-tmp-$(mcookie)
162c162
< CFLAGS="-g $OPTIMIZ" \
---
> CFLAGS="-g $OPTIMIZ -mno-tls-direct-seg-refs" \
166d165
< --with-headers=/usr/src/linux-${KERNEL_HEADERS}/include \
e execute o comando
su -c glibc.SlackBuild
Ao final da execução deste script, você terá os novos pacotes para Slackware da glibc otimizada para funcionamento com o Xen. São eles:
glibc-2.7-i486-17.tgz glibc-i18n-2.7-noarch-17.tgz glibc-solibs-2.7-i486-17.tgz glibc-debug-2.7-i486-17.tgz glibc-profile-2.7-i486-17.tgz glibc-zoneinfo-2.7-noarch-17.tgz
Considerações sobre a glibc
- A glibc é uma biblioteca muito importante para o correto funcionamento do sistema. Por isto, tenha certeza do que está fazendo.
- Alguns programas podem ser compilados estaticamente. Assim, pode acontecer de algum aplicativo que você utilize com o Slackware apresente a mensagem de erro do TLS