ForoSUSE

ForoSUSE (http://www.forosuse.org/forosuse/index.php)
-   Programación y Scripts (http://www.forosuse.org/forosuse/forumdisplay.php?f=8)
-   -   Utilizar varios nucleos en script (http://www.forosuse.org/forosuse/showthread.php?t=34682)

darktux 22-sep-2018 08:43

Utilizar varios nucleos en script
 
Hola amigos,

Paso a saludarlos y a la vez solicitarles de su apoyo, resulta que necesito que un script utilice mas de un núcleo ya que requiero que un proceso se ejecute más rápido, por ahí leí que la forma de solventar esto es utilizando lo que se conoce como paralelizar cosa que es un término nuevo para mí.

Tengo 10 GB en Ram y el script que pruebo es el siguiente:


Código:

#!/bin/bash

function maxmem {
        while [ `free | grep Mem | awk '{print $4}'` -lt 50000 ]
        do
                sleep 1
        done
}

task(){
  sleep 0.5; echo "$1";
}

for thing in a b c d e f g; do
  maxmem; task "$thing" &
done
wait

Como ven, me estoy basando en el valor de la memoria dispnible, pero por ahí leí que otra forma de hacerlo es utilizando el número de núcleos máximo -1 pero no sé cómo hacer esto.

el máximo de núcleos -1 lo obtengo así:

let MAXNUCLEOS=(`ls -ld /sys/devices/system/cpu/cpu*|wc -l`)-1

¿Cómo puedo hacer para que en lugar de utilizar un dato de memoria disponible pueda utilizar el valor de $MAXNUCLEOS para evitar que es sistema se cuelgue durante la ejecución del script?

Me ayudan por favor? Desde ya les agradezco su ayuda

DiabloRojo 22-sep-2018 10:08

Para obtener el nº maximo de Cores, lee esto: https://stackoverflow.com/questions/...e-command-line

Se me ocurre que uses esa variable restandole uno para poner un loop que ejecute como máximo esos procesos.

linux bash run multiple cores

darktux 22-sep-2018 23:30

Muchas gracias DiabloRojo por tu respuesta, voy a revisar el link, si logro solventar les comento luego los resultados.

Saludos.


La franja horaria es GMT +2. Ahora son las 14:52.

Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.


Esta página está bajo una licencia de Creative Commons, salvo que no se indique lo contrario.
Creative Commons License

Valid CSS!