AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-274235

Andriy Makukha's questions

Martin Hope
Andriy Makukha
Asked: 2019-07-12 23:21:32 +0800 CST

Por que os aplicativos no FreeBSD são mais lentos do que no Linux?

  • 5

Atualizar

Eles não! Pelo menos, não para mim.

Veja minha resposta.

Pergunta original

De acordo com os benchmarks Phoronix do ano passado , os aplicativos no FreeBSD rodam mais lentamente do que no Debian (incluindo o mecanismo de xadrez Stockfish, Node.js, codificação FLAC e outras tarefas computacionais).

O próprio artigo do Phoronix atribui algumas das diferenças de desempenho ao uso do Clang em vez do compilador GCC. Algumas outras opiniões dizem que o uso do ZFS torna o FreeBSD mais lento, pois o ZFS é inerentemente mais lento que o ext4.

Mas mesmo tarefas puramente computacionais no FreeBSD compiladas com o GCC8 eram mais lentas do que no Linux.

Qual é a causa disso? É inerente às diferenças entre os kernels do FreeBSD e do Linux, pode ser causado pela pior qualidade dos drivers ou há algum outro motivo?

PS Para torná-lo mais específico, aqui está um programa puramente computacional bastante simples que roda mais devagar no FreeBSD do que no Linux de acordo com o Phoronix: m-queens 1.2 . Compilado assim:

gcc -o m-queens.bin main.c -O2 -march=native -mtune=native -std=c99 -fopenmp

Como essa é uma tarefa multithread que foi executada em duas CPUs de 20 núcleos, suspeito que a diferença de desempenho se resume a quão bem o sistema operacional lida com vários threads.

PPS Para deixar mais claro, estou ciente de que o FreeBSD possui bons recursos de rede e que é usado pela Netflix . A questão é especificamente sobre tarefas computacionais, como a acima.

PPPS Depois de instalar o FreeBSD (TrueOS) no meu desktop de 6 núcleos junto com o Ubuntu e tentar executar o benchmark do queens, não notei nenhuma diferença significativa no desempenho multithread. Embora o Phoronix afirme que funcionou 39% mais lento no FreeBSD, em meus testes foi apenas 3,7% mais lento, o que pode ser atribuído a uma pequena diferença na versão do compilador (gcc 7.4 no TrueOS, gcc 7.2 no Ubuntu). Vou testar mais depois.

linux freebsd
  • 2 respostas
  • 5747 Views
Martin Hope
Andriy Makukha
Asked: 2019-07-04 05:22:27 +0800 CST

Undump od (despejo octal ou hexadecimal) na versão 6 Unix

  • 2

odO comando (octal dump) é implementado no Unix desde a versão 1. No entanto, não consegui encontrar um comando reverso no manual do Unix da versão 6 (1975). Maneiras modernas de reverter odcom xxdou sednão se aplicam ao Unix V6, uma vez que sede awkapareceu apenas na versão 7 (enquanto uudecode, xxde base64não estão disponíveis também).

As perguntas são:

  • Como as pessoas em 1975 converteram listagens octais ou hexadecimais em arquivos binários?
  • Como posso fazer isso em um emulador PDP-11 que só me permite colar texto no terminal da área de transferência? (Em outras palavras, é necessário escrever meu próprio programa para isso?)

Aqui está um exemplo de despejo hexadecimal de um arquivo binário odque eu gostaria de converter de volta em binário:

# od -h /bin/sum
0000000 0107 00ba 0000 0204 0000 0000 0000 0001
0000020 1583 0bd6 0ac3 0601 8901 0a37 00ae 15b7
0000040 0002 8905 0000 0000 8609 15c0 0001 8904
0000060 0026 0005 01ef 706f 6472 000a 1001 0a05
0000100 1040 8903 00be 0200 870b 0bc0 030e 0ab7
0000120 007a 15c2 00be 9484 6105 0b45 7e04 01f0
0000140 15c0 0001 8904 0080 0002 09f7 0026 15c0
0000160 0001 8904 0083 0001 1dc5 0050 09f7 0014
0000200 15c0 0001 8904 0082 0001 1040 8906 01c2
0000220 203f 200a 1026 1066 1141 09f7 0006 1581
0000240 1580 0087 0a00 7217 000a 1066 1001 0302
0000260 09f7 fff0 15b7 0012 65f7 0030 000c 15c0
0000300 0001 8904 00ba 0001 0087
0000312 
od hex
  • 2 respostas
  • 1310 Views
Martin Hope
Andriy Makukha
Asked: 2019-07-02 23:00:02 +0800 CST

Como entender o código de montagem deste TMG da versão 6 do Unix?

  • 6

As primeiras versões do Unix incluíam a ferramenta de Doug McIlroy tmg("transmogrifier"), um dos primeiros compiladores-compiladores. O TMG foi implementado na linguagem assembly de Dennis Ritchie, bem como no próprio TMGL (a linguagem que o TMG traduz em assembly). Aqui está o manual do TMG (1972). Aqui está o código fonte completo da versão 6 Unix.

Como estou tentando entender como funcionava a implementação do TMG por McIlroy, estou lendo o arquivo tmgl.s, uma tradução de tmgl.tfeita pelo TMG. E estou perplexo com os seguintes trechos:

.1=.
1
.2=.
2
.3=.

E:

goto;..2
..3:null
..2:

Li os manuais do PAL-11R e do Unix Assembly , mas não me lembro de uma explicação.

Particularmente:

  • .significa "contador de localização", mas o que é .3=.?
  • ..significa "contador de realocação", mas o que é ..3?

(Para piorar as coisas, esse tipo de sintaxe parece ser encontrado apenas na implementação do TMG, não em qualquer outro arquivo de origem do Unix V6. E, para excluir a possibilidade de um código corrompido ou sintaxe descontinuada, as fontes do TMG compilam em um Python Emulador PDP-11 rodando Unix V6.)

compiler assembly
  • 1 respostas
  • 342 Views
Martin Hope
Andriy Makukha
Asked: 2019-06-25 05:05:46 +0800 CST

Qual algoritmo de soma de verificação é usado pela versão 5 do Unix?

  • 4

Não consigo descobrir qual algoritmo foi usado no Unix V5 e V6 para o sumcomando.

A princípio, pensei que fosse uma simples soma de bytes módulo 2^16. No entanto, para uma string "1111111111\n" repetida 320 vezes, ela calcula uma soma de verificação de 28930 (usando o emulador PDP-11 de Julius Schmidt para JavaScript). Considerando que uma simples soma de bytes para ele é dois bytes menor:

$ python -c 'print(sum(bytearray(b"1111111111\n"*320)) & 0xFFFF)'
28928

Mais tarde, nas páginas man do MacOS , descobri que os comandos sume cksumtinham um longo histórico de inconsistências. No entanto, mesmo as versões "históricas" do algoritmo fornecidas no MacOS não concordam com a soma de verificação do Unix V5. A correspondência mais próxima é o comando padrão sumdo UNIX System V (invocado no Mac como cksum -o 2), que retorna a mesma soma de verificação para esta string, mas discorda para outras:

$ python -c 'print("1111111111\n"*320, end="")' | cksum -o 2
28930 7

Para ser mais específico, o cksum -o 2e o Unix V5 sumproduzem saídas diferentes para a maioria dos arquivos binários no emulador (por exemplo, na pasta /bin), embora concordem na maioria dos arquivos de texto.

Este é um comportamento genuíno ou um bug no emulador? Se for genuíno, qual é o algoritmo?

PS Aqui está o código fonte , se alguém puder ler o código assembly de 1974.

historical-unix checksum
  • 1 respostas
  • 417 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve