mkdir /var/log/session/
chmod 773 /var/log/session/
# check with script is installed
# /etc/profile
timestamp=`date "+%m%d%Y%H%M"`
output=/var/log/session/session.$USER.$$.$timestamp
SESSION_RECORD=started
export SESSION_RECORD
script -t -f -q 2>${output}.timing $output
chmod 600 $output
UsuárioA:
$ cat ~/.screenrc
multiuser on
acladd root
acladd william
# style of screen :D
caption string "%?%F%{= Bk}%? %C%A %D %d-%m-%Y %{= kB} %t%= %?%F%{= Bk}%:%{= wk}%? %n "
caption always
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
UsuárioA:
screen -S MeuScreenShared
Usuário william:
screen -x usuarioA/MeuScreenShared
# se tiver mais de um screen aberto, coloque -r e o pid.tty do screen
screen -x usuarioA/MeuScreenShared -r 1529630.MeuScreenShared
Para facilitar para UsuárioA:
$ cat ~/.bash_profile
alias sharedscreen="screen -S MeuScreenShared"
Converter PDF A0, A1 … para múltiplos A4
mutool poster -x 6 -y 3 /tmp/arquivo-origem.pdf /tmp/arquivo-saida.pdf
Equivalente:
rpm -qf $(which PROGRAMA) | dpkg -S $(which PROGRAMA)
lsof -p 1570
pwdx
pwdx 1570
readlink -e /proc/1570/cwd/
dnf upgrade --refresh --advisory=FEDORA-2024-d02c7bb266
pkg update
pkg install nmap
pkg upgrade
vim /usr/local/etc/ssh/sshd_config
vim /usr/local/etc/inc/plugins.inc.d/openssh.inc
pluginctl -s
/usr/local/sbin/configctl openssh restart
Ótima pergunta! Quando queremos ir além de só "uso de recursos" (CPU, memória, disco, etc) e tentar identificar gargalos reais de desempenho causados no nível de kernel, estamos entrando em território de análise mais profunda — e ferramentas como perf
, ftrace
, bpftrace
, systemtap
e eBPF
são as melhores amigas nesse caso.
Aqui vai um guia prático e direto:
vmstat 1
Mostra o comportamento do kernel com relação a swap, IO, processos bloqueados, etc.
wa
(wait I/O):
vmstat 1
Se wa
está alto, você tem um gargalo de disco.
iostat -x 1
(do pacote sysstat
)Mostra detalhadamente o uso do disco e os tempos de espera.
iostat -x 1
Foque em:
await
: tempo médio de espera por I/Osvctm
: tempo de serviçoutil
: quanto o disco está ocupado (se for ~100%, é gargalo claro)perf top
Ferramenta poderosa para ver quais funções do kernel estão consumindo CPU.
perf top
Se você ver funções como do_page_fault
, sync
, io_schedule
, etc., você já tem uma pista de onde está o problema (memória, I/O, etc).
perf record
+ perf report
Use para um perfil mais detalhado:
perf record -a sleep 10
perf report
bpftrace
scripts prontosSe tiver bpftrace
instalado, use scripts como:
bpftrace -e 'kprobe:vfs_read { @[kstack()] = count(); }'
Ou:
bpftrace -e 'tracepoint:syscalls:sys_enter_* { @[probe] = count(); }'
Isso mostra as chamadas de sistema mais usadas.
dstat --top-bio
Mostra quem está mais acessando o disco.
iotop
Lista os processos que mais causam I/O no momento, e se estão em espera por disco.
cat /proc/interrupts
Verifique se há sobrecarga de interrupções (geralmente em problemas de rede/disk com drivers):
watch -n1 cat /proc/interrupts
Situação | Ferramenta recomendada |
---|---|
Disco lento / espera por I/O | iostat , vmstat , iotop |
CPU em uso pelo kernel | perf top , perf report |
Muitos context switches / travas | vmstat , pidstat , top |
Quer saber quem chama syscalls | bpftrace , strace , perf |
Uso de kernel por processos | top -H , htop , pidstat |
script de diagnóstico leve, que:
vmstat
, iostat
, iotop
, perf
, etc.check-gargalo.sh
#!/bin/bash
echo "==== Diagnóstico rápido de gargalos ===="
echo "Data/Hora: $(date)"
echo
# CPU e memória via vmstat
echo "===> vmstat (CPU, memória, I/O wait):"
vmstat 1 5
echo
# Uso de disco detalhado
echo "===> iostat -x (disco - espera e uso):"
iostat -x 1 5
echo
# Top 5 processos que mais fazem I/O
if command -v iotop &> /dev/null; then
echo "===> iotop (maior I/O por processo - 5s):"
sudo iotop -o -b -n 5 | head -n 20
else
echo "===> iotop não instalado. Use: dnf install iotop"
fi
echo
# Verificando interrupções de hardware (drivers)
echo "===> Interrupções por CPU (verificar se algo domina):"
cat /proc/interrupts | grep -v '^$'
echo
# Verificando funções do kernel (amostragem rápida)
if command -v perf &> /dev/null; then
echo "===> perf top (funções de kernel mais quentes - 5s):"
sudo perf top -d 5 --stdio | head -n 20
else
echo "===> perf não instalado. Use: dnf install perf"
fi
echo
# Stack de chamadas de leitura no kernel
if command -v bpftrace &> /dev/null; then
echo "===> bpftrace - kstack de vfs_read (10s):"
sudo bpftrace -e 'kprobe:vfs_read { @[kstack()] = count(); }' -d 10
else
echo "===> bpftrace não instalado. Pode usar: dnf install bpftrace"
fi
echo
echo "==== Diagnóstico encerrado. Analise os valores de 'wa', 'await', 'util' e 'perf' ===="
dnf install sysstat iotop perf bpftrace -y
Salve como check-gargalo.sh
, torne executável:
chmod +x check-gargalo.sh
./check-gargalo.sh