um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · slide: [ ] presenter:...

47
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command Slide: [ ] Presenter: @hisham_hm Talk: A história do htop A história do htop um ”making of” Hisham Muhammad @hisham_hm http://hisham.hm

Upload: phungmien

Post on 10-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

A história do htopum ”making of”

Hisham Muhammad@hisham_hm http://hisham.hm

Page 2: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/20172

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Sobre mim

autor original do htop, um projeto iniciado em 2004

http://hisham.hm/htop/

desenvolvedor principal do LuaRocks, o gerenciador de pacotes da linguagem Lua

http://luarocks.org/

co-fundador da distribuição GoboLinux

http://gobolinux.org/

Page 3: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/20173

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

O que é o htop

um gerenciador de tarefas interativo

o objetivo era ser um “top melhorado”

o que eu queria dizer com isso: scrolling!

(as versões do top melhoraram muito de lá pra cá!)

Page 4: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/20174

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

O top

Page 5: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/20175

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Hello, htop!

Page 6: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/20176

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Motivações iniciais

Resolver um problema próprio

(“scratch your itch”)

Aprender!

Page 7: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/20177

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

“Refazer” um programa clássico

!?

Page 8: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/20178

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

“Refazer” um programa clássico

Page 9: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/20179

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

“Refazer” um programa clássico

...não é um bicho de sete cabeças

Os programas que você usa todo dia não são mágicos

Page 10: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201710

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Como obter os dados dos processos?

O kernel os apresenta em /proc

Um sistema de arquivos virtual

/proc/12345/mem

/proc/12345/stat

/proc/cpuinfo...

Page 11: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201711

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Como ler esses dados?

Ora, da maneira mais óbvia e simples possível

open()

read()

close()

Page 12: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201712

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Mas como o top faz?

strace top 2> top.log

Page 13: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201713

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Page 14: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201714

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Page 15: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201715

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Aí “só era questão de programar”

Ler os dados do /proc

“Desenhar” a interface

Page 16: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201716

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Um detalhe sobre a interface

A arte imita a vida

A vida imita a arte

Page 17: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201717

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Page 18: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201718

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Page 19: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201719

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Page 20: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201720

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Page 21: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201721

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Um programa que “deu certo”

Sempre é difícil descobrir o porquê

Alguns palpites sobre fatores que influenciaram

Page 22: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201722

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Ubiquidade da plataforma

o terminal!

talvez a única plataforma hoje tão presente(para desenvolvedores)

quanto a web

Page 23: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201723

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

A linguagem

fazer em C

...mas não pelos motivos “óbvios”

Page 24: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201724

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Facilidade de compilar em qualquer lugar

Poucas dependências:

ncurses

cores e coordenadas no terminal

todo Linux tem (dependência do Bash)

Page 25: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201725

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Facilidade de compilar em qualquer lugar

Poucas dependências:

ncurses

cores e coordenadas no terminal

todo Linux tem (dependência do Bash)

e só

Page 26: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201726

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Facilidade de compilar em qualquer lugar

Build com AutoTools:

./configure

make

sudo make install

Page 27: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201727

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Facilidade de empacotar

Fácil de compilar

=

Fácil de empacotar em uma distro

Page 28: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201728

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

E assim começou o htop

htop-0.13.tar.gz

22kB

wc -l *.c

1684

Page 29: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201729

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Para comparação

htop-2.0.2.tar.gz

476kB

wc -l *.c */*.c

13811

Page 30: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date:

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

A grande mudança

Tornar o htop portável

Page 31: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201731

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

htop off-Linux

alguns usuários já rodavam no FreeBSD usando linprocfs (uma camada de emulação)

Page 32: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201732

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Backstory

« A wild Mac OS X fork appears! »

um port ad-hoc do htop 0.8.2

Page 33: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201733

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Passa o tempo

bug reports começam a aparecer

bugs antigos resolvidos há anos!

começa a ficar chato

Page 34: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201734

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Crowdfunding

Portar o htop para Mac

1/3 da meta atingida

Page 35: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201735

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Tornar o htop portável

Torná-lo mais fácil de ser portado

Abrir o caminho para novos ports

Page 36: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201736

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Como quebrar a dependência de SO da maneira fácil

tente compilar em outro SO!

montar uma VM

primeira tentativa: FreeBSD

desisti rápido

segunda tentativa: PC-BSD

mais fácil para um usuário Linux!

Page 37: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201737

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Abordagens para aplicações multi-plataforma

bases de código separadas

iOS vs. Android

um spaghetti de #ifdefs

às vezes é o jeito

APIs bem definidas entre a parte portável e não-portável

Page 38: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201738

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Isolar a parte Linux

linux/

unsupported/

Page 39: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201739

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Isolar a parte Linux

linux/

unsupported/

freebsd/

Page 40: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201740

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Uma abordagem “OO”

Process.c

Process.h

ProcessList.c

ProcessList.h

...

linux/

LinuxProcess.c

LinuxProcessList.c

...

Page 41: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201741

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Subi para o GitHub e...

unsupported/

linux/

freebsd/

Page 42: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201742

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Subi para o Github e...

unsupported/

linux/

freebsd/ - merged PRs!

Page 43: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201743

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Subi para o Github e...

unsupported/

linux/

freebsd/

openbsd/

Page 44: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201744

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Subi para o Github e...

unsupported/

linux/

freebsd/

openbsd/

darwin/

Page 45: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201745

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Impacto positivo

novas pessoas contribuindo

sempre algo bom!

maior diversidade de contribuições

Galera do OpenBSD e a preocupação com segurança!

alguém quer portar para o NetBSD?

...Cygwin!?

Page 46: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201746

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Conclusões

Siga os padrões da sua comunidade

(código, empacotamento)

Portabilidade vale a pena mesmo

“Stratch your itch!”

Page 47: um ”making of”hisham.hm/papers/talks/htop-phpexperience2017.pdf · Slide: [ ] Presenter: @hisham_hm ... o objetivo era ser um “top melhorado” o que eu queria dizer com isso:

Date: 28/03/201747

PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command

Slide: [ ]

Presenter: @hisham_hmTalk: A história do htop

Obrigado!

http://hisham.hm/htop

http://github.com/hishamhm/htop

@hisham_hm