Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. #1

    Padrão Squid em 64 Bits

    Boa tarde, amigos do forum, gostaria de saber se alguém está usando o Squid em máquina com sistema em 64bits, e está tendo bons resultados. Estou tentando compilar a versão 2.7 no CentOS 5.3 mais estou tendo erros. Contudo a versão instalada via yum, a 2.6, está funcionando. Bom as dúvidas começaram após eu ver alguns artigos que dizem que as aplicações originalmente desenvolvidas para 32bits, funcionariam em plataforma 64bits, porém com desempenho inferior, isso é verdade? Seria o caso do Squid? Grato a todos.

  2. #2
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Bom, squid não se aproveita de funcionalidades 64 bits ainda. Pode até ficar mais lento sim.



  3. #3

    Padrão

    Citação Postado originalmente por osmano807 Ver Post
    Bom, squid não se aproveita de funcionalidades 64 bits ainda. Pode até ficar mais lento sim.

    Beleza, foi realmente o que andei lendo na net.

  4. #4

    Padrão

    osmano807, nao fala o que tu nao tem certeza.. confunde o pessoal !!

    respondendo o topico:

    ele aproveita SIM as funcionalidades do 64bits.. o que o squid NAO aproveita é sistema multi-cpu (squid eh single thread) !!

    so uso squid em ambiente 64bits devido ao limite de 4gb de ram na plataforma 32bits ...

    tem proxy com 16gb de ram e o squid consumindo 12gb !! :P


    Citação Postado originalmente por osmano807 Ver Post
    Bom, squid não se aproveita de funcionalidades 64 bits ainda. Pode até ficar mais lento sim.



  5. #5

    Padrão

    < flame >
    sinceramente, lendo novamente o topico...

    galera.. antes de opinar um absurdo deste, vamos ler e pesquisar... tem muita gente aqui no forum falando um tanto de besteira... coisa sem fundamento....

    < / flame >

    só para completar o que eu disse anteriormente... veja um exemplo bem simples:

    sizes.c
    Código :
    #include <stdio.h>
    int main(void)
    {
        printf("char\t\t%d\n", sizeof(char));
        printf("short\t\t%d\n", sizeof(short));
        printf("int\t\t%d\n", sizeof(int));
        printf("float\t\t%d\n", sizeof(float));
        printf("double\t\t%d\n", sizeof(double));
        printf("long int\t\t%d\n", sizeof(long int));
     
    }
    compilar com:

    Código :
     gcc sizes.c -o sizes

    vamos aos testes:

    Plataforma 32bits:
    Linux xxxxxxx.xxxxx.xxxx.xxxx 2.6.18-128.1.10.el5.centos.plus #1 SMP Mon May 11 07:04:55 EDT 2009 i686 athlon i386 GNU/Linux

    Código :
    # ./sizes
    char            1
    short           2
    int             4
    float           4
    double          8
    [B]long int        4[/B]

    Plataforma 64bits:
    Linux xxxx.xxxx.xxxx.xx 2.6.29.4-onda #8 SMP Thu May 28 03:24:12 BRT 2009 x86_64 x86_64 x86_64 GNU/Linux

    Código :
    # ./teste
    char            1
    short           2
    int             4
    float           4
    double          8
    [B]long int        8[/B]

    é uma diferença 'minima', em que todos os programas compilados em 64bits utilizam !!

    neste site (HP C) tem uma tabela maior...


    outros sites com mais info:

    The difference between 64 and 32 bit processors

    So, what's different between 64 & 32 bit processors?

    64-BIT PROGRAMMING MODELS

  6. #6
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    And start the WAR!

    Isso não é otimização direta do squid, e nem porque o compilador já muda o tamanho das variáveis, quer dizer que o squid se aproveita disso, ele não tá nem aí, bota os valores nela e nem se importa.

    Usar mais de 4GB seria normal, mas não tiveram que modificar o código do squid só para suportar esse limite maior de memória.
    Última edição por osmano807; 29-09-2009 às 06:11.



  7. #7

    Padrão

    tu sabe pra que serve o 'configure' ?? justamente para acertar o codigo de acordo com o sistema


    usar mais de 4gb é normal em sistemas 64bits !! em 32bits é impossivel passar de 4gb !! isso não é limitação de software.. é limitação de plataforma 32bits ..


    é bem simples a conta:

    232 = 4.294.967.296

    voce pode até colocar 8GB .. mas vai utilizar somente 4GB .. (o que dará 3.8g) MAS se voce ativar uma opção na bios e tambem no kernel, chamada PAE (Physical Address Extension) ele faz a conta acima usando alocações de 36bits ... ai o sistema consegue enxergar os 4GB certinho ..

    264 = da um valor praticamente infinito ...


    isso é materia de faculdade, arquitetura de computadores.. primeiro período !!

    leu os sites que postei ? então leia .. mas com atenção !!



    Citação Postado originalmente por osmano807 Ver Post
    And start the WAR!

    Isso não é otimização direta do squid, e nem porque o compilador já muda o tamanho das variáveis, quer dizer que o squid se aproveita disso, ele não tá nem aí, bota os valores nela e nem se importa.

    Usar mais de 4GB seria normal, mas não tiveram que modificar o código do squid só para suportar esse limite maior de memória.

  8. #8

    Padrão

    Valeu gente, vou fazer mais testes aqui no 64 Bits. Aqui eu uso CentOS, vou tentar mais um pouco compilar o Squid 2.7, e até mesmo o LUSCA.

    Alexandre, não entendi direito o lance do gcc sizes.c -o sizes, para compilar o Squid em 64 Bits tem que usar algo diferente além do ./configure?



  9. #9

    Padrão

    O uso de 64Bits sim é usado por qualquer programa que tenha como nosso amigo disse o código fonte acertado pelo ./configure e ou pelos dedos de um programador, infelizmente o squid ainda não faz multi-thread.

    Dizer que o binário de um pacote pronto no seu caso rpm é mais rápido que um binário compilado por voce, sim pode ser possível utilize o squid -v para ver as opções de compilação utilizadas em um e no outro, muito pode ser ajustado. Poste mais ai para agente ver.

  10. #10

    Exclamation

    Alexandre... brigadão pelas suas esplanações.... sempre com conteudo... valeu

    PS: Kara qndo eu crescer quero ser como vc !!!! (Parabéns)



  11. #11

    Padrão

    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether to enable maintainer-specific portions of Makefiles... no
    checking for x86_64-redhat-linux-gnu-gcc... no
    checking for gcc... gcc
    checking for C compiler default output file name...
    configure: error: C compiler cannot create executables
    See `config.log' for more details.


    Ao tentar com o LUSCA tive este erro.

    Estou tentando as seguintes opções no ./confiigure:

    ./configure --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr/local/squid --exec-prefix=/usr --bindir=/usr/bin
    --sbindir=/usr/sbin --sysconfdir=/etc --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --sharedstatedir=/usr/com --mandir=/usr/share/m
    an --infodir=/usr/share/info --exec_prefix=/usr --bindir=/usr/sbin --libexecdir=/usr/lib64/squid --localstatedir=/var --datadir=/usr/share --sysconfdir=/etc/
    squid --enable-epoll --enable-snmp --enable-removal-policies=heap,lru --enable-storeio=aufs,diskd,null,ufs --enable-ssl --with-openssl=/usr/kerberos --enable
    -delay-pools --enable-linux-netfilter --with-pthreads --enable-ntlm-auth-helpers=SMB,fakeauth --enable-external-acl-helpers=ip_user,ldap_group,unix_group,wbi
    nfo_group --enable-auth=basic,digest,ntlm --enable-digest-auth-helpers=password --enable-useragent-log --enable-referer-log --disable-dependency-tracking --e
    nable-cachemgr-hostname=localhost --enable-basic-auth-helpers=LDAP,MSNT,NCSA,PAM,SMB,YP,getpwnam,multi-domain-NTLM,SASL --enable-cache-digests --enable-ident
    -lookups --enable-follow-x-forwarded-for --enable-wccpv2 --with-maxfd=16384 build_alias=x86_64-redhat-linux-gnu host_alias=x86_64-redhat-linux-gnu target_ali
    as=x86_64-redhat-linux-gnu CFLAGS=-D_FORTIFY_SOURCE=2 LDFLAGS=-pie

    O erro acontece também com squid 2.7, alguém sabe o que é?

  12. #12

    Padrão

    Josue, seu links esta sem compiladores ..

    qual distro voce esta utilizando ? ubuntu ? redhat ? centos ?

    se for centos faça assim:

    Código :
    yum install gcc gcc-c++ autoconf automake

    se for ubuntu ou debian:

    Código :
    sudo aptitude install build-essential



  13. #13

    Padrão

    Alexandre, grato pela atenção, instalei os pacotes sugeridos, ainda continuo com o erro:

    Uso CentOs.

    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether to enable maintainer-specific portions of Makefiles... no
    checking for x86_64-redhat-linux-gnu-gcc... no
    checking for gcc... gcc
    checking for C compiler default output file name...
    configure: error: C compiler cannot create executables
    See `config.log' for more details.

    O que ainda falta?
    Última edição por Josue Guedes; 29-09-2009 às 12:37.

  14. #14
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Me axe a linha do configure.in que marca 64 bits, e as linhas no código com o ifdef disso...
    configure.ac Rlz!
    Squid não tem nada de especial para 64 bits, o mesmo código 32 bits é compilado, só que com o suporte aos limites maiores das variáveis, mas isso fica por conta do compilador.
    Não precisava dessa "aula" de limites do 32 bits, eu já sabia. O squid só utiliza mais memória em 64 bits, porque o kernel libera, não é uma otmização do código, é somente no kernel.
    Última edição por osmano807; 29-09-2009 às 12:52.



  15. #15

    Padrão

    rapaz,, larga de falar besteira...

    Código :
    AC_CHECK_SIZEOF(void *)
    AC_CHECK_SIZEOF(char)
    AC_CHECK_SIZEOF(short)
    AC_CHECK_SIZEOF(int)
    AC_CHECK_SIZEOF(long)
    AC_CHECK_SIZEOF(long long)
    AC_CHECK_SIZEOF_SYSTYPE(int8_t)
    AC_CHECK_SIZEOF_SYSTYPE(uint8_t)
    AC_CHECK_SIZEOF_SYSTYPE(u_int8_t)
    AC_CHECK_SIZEOF_SYSTYPE(int16_t)
    AC_CHECK_SIZEOF_SYSTYPE(uint16_t)
    AC_CHECK_SIZEOF_SYSTYPE(u_int16_t)
    AC_CHECK_SIZEOF_SYSTYPE(int32_t)
    AC_CHECK_SIZEOF_SYSTYPE(uint32_t)
    AC_CHECK_SIZEOF_SYSTYPE(u_int32_t)
    AC_CHECK_SIZEOF_SYSTYPE(int64_t)
    AC_CHECK_SIZEOF_SYSTYPE(uint64_t)
    AC_CHECK_SIZEOF_SYSTYPE(u_int64_t)
    AC_CHECK_SIZEOF_SYSTYPE(__int64)

    no momento que roda o configure ele pega os valores do sistema.. justamente para saber o que ele precisa utilizar para fazer os calculos...

    eh bem simples.. compile uma aplicação que use md5 (checksum) em 32bits.. e roda ela no 64bits... vai dar checksum diferente por causa disso !!


    até o endereçamento de um socket tem valor diferente...

    os codigos tirei do lusca.org do qual participo..

    Citação Postado originalmente por osmano807 Ver Post
    Me axe a linha do configure.in que marca 64 bits, e as linhas no código com o ifdef disso...
    configure.ac Rlz!
    Squid não tem nada de especial para 64 bits, o mesmo código 32 bits é compilado, só que com o suporte aos limites maiores das variáveis, mas isso fica por conta do compilador.
    Não precisava dessa "aula" de limites do 32 bits, eu já sabia. O squid só utiliza mais memória em 64 bits, porque o kernel libera, não é uma otmização do código, é somente no kernel.

  16. #16
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Citação Postado originalmente por alexandrecorrea Ver Post
    rapaz,, larga de falar besteira...

    Código :
    AC_CHECK_SIZEOF(void *)
    AC_CHECK_SIZEOF(char)
    AC_CHECK_SIZEOF(short)
    AC_CHECK_SIZEOF(int)
    AC_CHECK_SIZEOF(long)
    AC_CHECK_SIZEOF(long long)
    AC_CHECK_SIZEOF_SYSTYPE(int8_t)
    AC_CHECK_SIZEOF_SYSTYPE(uint8_t)
    AC_CHECK_SIZEOF_SYSTYPE(u_int8_t)
    AC_CHECK_SIZEOF_SYSTYPE(int16_t)
    AC_CHECK_SIZEOF_SYSTYPE(uint16_t)
    AC_CHECK_SIZEOF_SYSTYPE(u_int16_t)
    AC_CHECK_SIZEOF_SYSTYPE(int32_t)
    AC_CHECK_SIZEOF_SYSTYPE(uint32_t)
    AC_CHECK_SIZEOF_SYSTYPE(u_int32_t)
    AC_CHECK_SIZEOF_SYSTYPE(int64_t)
    AC_CHECK_SIZEOF_SYSTYPE(uint64_t)
    AC_CHECK_SIZEOF_SYSTYPE(u_int64_t)
    AC_CHECK_SIZEOF_SYSTYPE(__int64)
    no momento que roda o configure ele pega os valores do sistema.. justamente para saber o que ele precisa utilizar para fazer os calculos...

    eh bem simples.. compile uma aplicação que use md5 (checksum) em 32bits.. e roda ela no 64bits... vai dar checksum diferente por causa disso !!


    até o endereçamento de um socket tem valor diferente...

    os codigos tirei do lusca.org do qual participo..
    Quem disse que isso é somente para 64 bits? Tem diversas implementações de compiladores, o squid precisa saber qual o tamanho as variáveis no compilador que está sendo compilado.
    E também esses ifdef tavam pertos das linhas de compatilidade no Windows, sei não...

    Em todo caso, FUUUUUUUUUUU...



  17. #17

    Padrão

    nao eh tamanho da variavel do compilador... isto ai eh justamente para saber o tamanho do espaço de cada tipo de variavel.. que o sistema suporta... nao eh o compilador que define isto..

    bom.. dexa pra la.. entenda o que achar que deve :P

  18. #18
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.985
    Posts de Blog
    5

    Padrão

    Editado por motivos já claros.
    Última edição por osmano807; 29-09-2009 às 20:47.



  19. #19

    Padrão

    Galera, vê para min esse erro maldito de compilador ai, já instalei tudo que é GCC e nada.

  20. #20
    Avatar de leandrolopeswifi
    Ingresso
    Oct 2008
    Localização
    Porto Alegre - RS - Brasil
    Posts
    1.749
    Posts de Blog
    1

    Smile

    Citação Postado originalmente por alexandrecorrea Ver Post
    osmano807, nao fala o que tu nao tem certeza.. confunde o pessoal !!

    respondendo o topico:

    ele aproveita SIM as funcionalidades do 64bits.. o que o squid NAO aproveita é sistema multi-cpu (squid eh single thread) !!

    so uso squid em ambiente 64bits devido ao limite de 4gb de ram na plataforma 32bits ...

    tem proxy com 16gb de ram e o squid consumindo 12gb !! :P
    O meu squid na empresa de 16gb usa 13gb !!
    Mas funciona redondo!!!