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

A ídeia por de traz do Xen não é complicada, mas sua instalação e configuração envolve uma série de dicas e truques...

, , , ,

Deixe uma resposta

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">