fils01 (versió C compilada)fils01.py (versió Python)ps, top, htop (opcional), pstreegcc -pthread fils01.c -o fils01
Si no tens gcc instal·lat:
sudo apt-get install build-essential
python3 fils01.py --help 2>/dev/null || echo "El programa està llest"
# Verificar comandes disponibles
for cmd in ps top pstree; do
command -v $cmd >/dev/null && echo "✓ $cmd disponible" || echo "✗ $cmd NO disponible"
done
En un terminal, executa el programa C amb 4 fils durant 180 segons:
./fils01 4 180
PREGUNTA: Quin és el PID del procés que s'ha creat? (el programa ho mostra)
TASCA: En un segon terminal, verifica que el procés està en execució:
ps aux | grep fils01
PREGUNTA: A més del procés fils01, quins altres processos relacionats amb fils01 apareixen? Per què?
Utilitza la comanda ps per llistar tots els fils del procés:
ps -p <PID> -T
(Substitueix <PID> pel PID real del teu procés)
PREGUNTA: Quants fils té el procés? (compte: suma el fil principal + els fils creats)
TASCA: Captura la sortida en un fitxer:
ps -p <PID> -T > exercici1_2.txt
Executa la comanda següent per veure informació detallada:
ps -p <PID> -L -o pid,tid,pcpu,pmem,stat,comm
PREGUNTA: Quin és el TID (Thread ID) de cada fil?
PREGUNTA: Quin fil (TID) està consumint més CPU? (mira la columna %CPU)
TASCA: Captura aquesta informació:
ps -p <PID> -L -o pid,tid,pcpu,pmem,stat,comm > exercici1_3.txt
Utilitza pstree per veure l'estructura:
pstree -p <PID> -t
PREGUNTA: Com es representen els fils en la sortida de pstree?
TASCA: Guarda la sortida:
pstree -p <PID> -t > exercici1_4.txt
Si el programa anterior encara s'està executant, perfecte. Si no, torna a executar-lo.
Obre top en mode fils:
top -H -p <PID>
PREGUNTA: Quants fils veus a la llista?
TASCA: Dins de top:
P per ordenar per CPUM per ordenar per memòriaq per sortirPREGUNTA: Quin fil (TID) consumeix més CPU? És el mateix que a l'exercici anterior?
Executa top en mode batch per capturar una instantània:
top -H -p <PID> -b -n 1 > exercici2_2.txt
TASCA: Obre el fitxer exercici2_2.txt i respon:
Executa aquesta comanda per veure l'evolució cada 2 segons:
watch -n 2 "ps -p <PID> -L -o pid,tid,pcpu,pmem,stat,comm"
PREGUNTA: Els percentatges de CPU canvien molt entre actualitzacions? Per què creus que passa això?
Prem Ctrl+C per sortir.
En un altre terminal, executa el programa Python amb els mateixos paràmetres:
python3 fils01.py 4 180
PREGUNTA: Quin és el PID d'aquest nou procés?
Per al programa C:
ps -p <PID_C> -T --no-headers | wc -l
Per al programa Python:
ps -p <PID_PYTHON> -T --no-headers | wc -l
PREGUNTA: Quin programa té més fils? Per què creus que hi ha aquesta diferència?
Executa aquesta comanda per veure ambdós processos:
ps -eLo pid,tid,pcpu,pmem,comm | grep -E "(fils01|python3)" | head -20
TASCA: Guarda la sortida:
ps -eLo pid,tid,pcpu,pmem,comm | grep -E "(fils01|python3)" > exercici3_3.txt
PREGUNTA: Quin programa consumeix més memòria en total? (suma les columnes %MEM)
PREGUNTA: Quin programa és més "eficient" en termes de recursos?
Llista els fils directament des de /proc:
ls -l /proc/<PID>/task/
PREGUNTA: Quants directoris hi ha dins de task/? Coincideix amb el nombre de fils?
TASCA: Comprova el contingut d'un dels fils:
cat /proc/<PID>/task/<TID>/status | head -20
PREGUNTA: Quina informació útil pots trobar en aquest fitxer?
Consulta el límit màxim de fils del sistema:
cat /proc/sys/kernel/threads-max
PREGUNTA: Quin és aquest límit al teu sistema?
Compta els fils totals actius al sistema:
ps -eLf | wc -l
PREGUNTA: Quants fils hi ha actualment en execució al sistema?
Crea un script molt simple anomenat monitor.sh que:
Plantilla del script:
#!/bin/bash
# Comprovar que s'ha proporcionat un PID
if [ -z "$1" ]; then
echo "Ús: $0 PID"
exit 1
fi
PID=$1
# Comprovar que el procés existeix
if ! kill -0 $PID 2>/dev/null; then
echo "Error: El procés $PID no existeix"
exit 1
fi
# TODO: Compta el nombre de fils
# Pista: ps -p $PID -T --no-headers | wc -l
# TODO: Mostra informació de recursos
# Pista: ps -p $PID -o %cpu,%mem,comm --no-headers
echo "Monitoratge completat"
TASQUES:
chmod +x monitor.sh./monitor.sh <PID>monitor.shHas de lliurar els següents fitxers:
exercici1_2.txt - Sortida de ps -Texercici1_3.txt - Sortida detallada dels filsexercici1_4.txt - Sortida de pstreeexercici2_2.txt - Captura de topexercici3_3.txt - Comparació C vs Pythonmonitor.sh - Script de monitoratgerespostes.txt - Fitxer amb les respostes a totes les preguntes=== PRÀCTICA 4: MONITORATGE DE FILS ===
PART 1
------
Exercici 1.1
- PID:
- Processos relacionats:
Exercici 1.2
- Nombre de fils:
Exercici 1.3
- TIDs:
- Fil amb més CPU:
Exercici 1.4
- Representació en pstree:
PART 2
------
Exercici 2.1
- Nombre de fils en top:
- TID amb més CPU:
Exercici 2.2
- Percentatge CPU per fil:
- Memòria total (RES):
Exercici 2.3
- Els percentatges canvien?:
- Per què?:
PART 3
------
Exercici 3.1
- PID Python:
Exercici 3.2
- Fils programa C:
- Fils programa Python:
- Diferència i motiu:
Exercici 3.3
- Memòria total C:
- Memòria total Python:
- Programa més eficient:
PART 4
------
Exercici 4.1
- Directoris en /proc/PID/task:
- Informació útil en status:
Exercici 4.2
- Límit threads-max:
- Fils actius al sistema:
PART 5
------
- Script completat i provat: Sí/No
| Part | Punts |
|---|---|
| Part 1: Identificació bàsica | 3 |
| Part 2: Monitoratge en temps real | 3 |
| Part 3: Comparació C vs Python | 2 |
| Part 4: Investigació /proc | 1 |
| Part 5: Script de monitoratge | 1 |
| Total | 10 |
fils01 ja estan fets, només has de monitorar-losteoriaFils01.md en qualsevol momentSi vols aprofundir més, crea un script que:
Nom del fitxer: monitor_avançat.sh
Aquest exercici és completament opcional i no afecta la nota de la pràctica base.