Newsgroup: it.comp.os.linux.sys
Titolo: multicore singlecore???

Slave a tutti.
 
Ho uno strano problema.
 
Sto cercando di usare le funzioni "parallele"
di "octave". Nello specifico "pararrayfun" e
"parcellfun".
 
Queste consentono di eseguire operazioni su
vettori in parallelo, cioe` su piu` core,
quando disponibili.
 
Il PC in questione ha un x86_64 con 4 CPU
fisiche ed 8 logiche (hyperthreading).
 
Ora, io riesco ad eseguire il codice ed, in
effetti, "octave" fa partire diversi thread.
Pero`, se per es. specifico 4 thread, quello
che vedo e` un singolo core al 100% e 4 processi
(top), ognuno che usa il 25% della CPU...
 
Stesso discorso con 2 od 8 thread.
 
Ogni tanto, raramente, sono riuscito a vedere
4 thread che vanno al 100% e 4 core usati.
 
Cercando le varie mailing list di "octave" ho
trovato che qualcuno ha lamentato la stessa cosa.
La risposta e` stata che "octave" usa semplicemente
"fork()" ed il resto lo fa il SO...
Il SO in questione e` Ubuntu 12.04 con kernel 3.13.x
(come da update proposto).
 
Ora, io sospetto che, per qualche ragione, lo
scheduler del kernel non ritenga di dover passare
i processi a 4 core (tranne qualche raro caso in
cui la macchina era gia` un po' carica).
 
Domanda: qualcuno conosce dove andare a metter
mano per poter pastrocchiare con lo scheduler?
Ovvero, qualcuno sa indicare cosa cercare, dato
che io non riesco ad immaginare le corrette
keyword?
 
Grazie in anticipo,
 
bye,
 
-- 
 
piergiorgio

 keyword?
 
qua:
http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.taskscheduler.html
 
 
ci sono un po' di info.
 
Mai hai provato a semplicemente ad aumentare la priorita' del processo?
Magari in questo modo lo scheduler modifica automaticamente la policy e
splitta correttamente i thread sui core.
 
pf tienici informati, che la cosa mi interessa.
 
Ciao Jack
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?

 keyword?
 
http://lwn.net/Articles/604609/
 
 
-- 
Flavio Visentin
 
Scientists discovered what's wrong with the female brain: on the left
side, there's nothing right, and on the right side, there's nothing left

 
 
 
-- 
 
piergiorgio

 
http://lwn.net/Articles/604609/
 
 
OK, thanks,
 
bye,
 
-- 
 
piergiorgio

 Di piu`, non saprei.
 
Il fatto ï¿œ che le distro attuali, specie se usano systemd, tendono a
mettere tutti i processi figli di init in cgroup separati, quindi quando
parte un processo questo tenderï¿œ comunque a condividere le risorse col
proprio padre. Avrei anche pensato ad un problema di scheduling dovuto a
numa, ma mi pare che il tuo sia un singolo processore multicore, quindi
non si dovrebbe applicare... poi hai un kernel troppo vecchio per le
innovazioni sul fronte numa.


On 2014-08-13 19:54, Piergiorgio Sartor wrote:
[...]
 
Mini aggiornamento.
 
Facendo partire *due* istanze di "octave", con lo
stesso script, succede, direi sistematicamente, che
la seconda istanza usa effettivamente un core per
processo generato. La prima sempre e solo un core.
 
Provando il tutto su di una macchina con un kernel
2.6.3x ed octave 3.4 (contro 3.8 dell'altro PC),
risulta tutto funzionare come dovrebbe.
 
P.S.: con cgroup non ci capisco niente!
 
bye,
 
-- 
 
piergiorgio

 risulta tutto funzionare come dovrebbe.
 
quindi e' il kernel o octave che ha problemi?


 
 
 
-- 
 
piergiorgio

 quindi e' il kernel o octave che ha problemi?
 
Dimenticavo...
 
Il "parallel" toolbox e` lo stesso per le due
versioni di "octave".
Questo gestisce i vari "fork()" e pipe.
 
Quindi, gli indizi puntano verso il kernel,
ovvero SO in generale.
 
bye,
 
-- 
 
piergiorgio

On 2014-08-13 19:54, Piergiorgio Sartor wrote:
[...]
 
Aggiornamento finale inconcludente.
 
E` stata rilasciata Ubuntu 14.04.1, quindi
il sistema ha proposto un update.
 
Fatto questo, Octave funziona in maniera
parallela come dovrebbe.
 
Perche`? Non so, ma funziona...
Il kernel e` lo stesso 3.13.x, forse con
qualche patch in piu`, ma forse viene
configurato diversamente.
 
bye,
 
-- 
 
piergiorgio


Sicuramente dipende dal sistema operativo e da come ï¿½ configurato.
Nel tuo caso i quattro thread vengono gestiti come farebbe un core.