traba sierra que puedo muy mac limpiarlo lento lenta high hacer esta como apple actualizar acelerar macos makefile

macos - sierra - mi mac esta muy lenta que puedo hacer



¿Cómo descubrir el número de núcleos*lógicos*en Mac OS X? (12)

¿Cómo puede saber, desde la línea de comandos, cuántos núcleos hay en la máquina cuando ejecuta Mac OS X? En Linux, uso:

x=$(awk ''/^processor/ {++n} END {print n+1}'' /proc/cpuinfo)

No es perfecto, pero está cerca. Se pretende alimentar esto para make , por lo que da un resultado 1 más alto que el número real. Y sé que el código anterior se puede escribir más densamente en Perl o se puede escribir usando grep, wc y cut, pero decidí que lo anterior era una buena relación entre concisión y legibilidad.

EDICIÓN MUY TARDÍA: Solo para aclarar: estoy preguntando cuántos núcleos lógicos están disponibles, porque esto se corresponde con la cantidad de trabajos simultáneos que quiero make . La respuesta de jkp, más refinada por Chris Lloyd, fue exactamente lo que necesitaba. YMMV.


Aún más fácil:

sysctl -n hw.ncpu


Comentarios para 2 buenas respuestas arriba:

1) la respuesta aceptada (y los comentarios) de jkp: hw.ncpu está aparentemente en desuso a favor de hw.logicalcpu ( https://ghc.haskell.org/trac/ghc/ticket/8594 )

2) con respecto a la actualización de 2014 de Karl Ehr: en mi computadora (con 2.5 ghz intel core i7), sysctl -a | grep machdep.cpu | grep per_package sysctl -a | grep machdep.cpu | grep per_package sysctl -a | grep machdep.cpu | grep per_package devuelve diferentes números:

machdep.cpu.logical_per_package: 16

machdep.cpu.cores_per_package: 8

Los valores deseados son:

machdep.cpu.core_count: 4

machdep.cpu.thread_count: 8

Cual partido

hw.physicalcpu: 4

hw.logicalcpu: 8


Como jkp dijo en un comentario, eso no muestra el número real de núcleos físicos. para obtener el número de núcleos físicos puede usar el siguiente comando:

system_profiler SPHardwareDataType


El siguiente comando le da toda la información sobre su CPU

$ sysctl -a | sort | grep cpu


En una MacBook Pro ejecutando Mavericks , sysctl -a | grep hw.cpu sysctl -a | grep hw.cpu solo devolverá algunos detalles crípticos. Se revela información mucho más detallada y accesible en la sección machdep.cpu , es decir:

sysctl -a | grep machdep.cpu

En particular, para los procesadores con HyperThreading (HT), verá el recuento total de CPU enumerado ( logical_per_package ) como el doble del recuento del núcleo físico ( cores_per_package ).

sysctl -a | grep machdep.cpu | grep per_package


Esto debería ser multiplataforma. Al menos para Linux y Mac OS X.

python -c ''import multiprocessing as mp; print(mp.cpu_count())''

Un poco lento pero funciona.


Para hacer esto en C puede usar la familia de funciones sysctl (3):

int count; size_t count_len = sizeof(count); sysctlbyname("hw.logicalcpu", &count, &count_len, NULL, 0); fprintf(stderr,"you have %i cpu cores", count);

Los valores interesantes para usar en lugar de "hw.logicalcpu", que cuenta los núcleos, son:

hw.physicalcpu - The number of physical processors available in the current power management mode. hw.physicalcpu_max - The maximum number of physical processors that could be available this boot. hw.logicalcpu - The number of logical processors available in the current power management mode. hw.logicalcpu_max - The maximum number of logical processors that could be available this boot.


Puedes hacer esto usando la utilidad sysctl :

sysctl -n hw.ncpu


Utilice el system_profiler | grep "Cores" system_profiler | grep "Cores" .

Tengo un:

MacBook Pro Retina, mediados de 2012.

Procesador: 2.6 GHz Intel Core i7

user$ system_profiler | grep "Cores" Total Number of Cores: 4

user$ sysctl -n hw.ncpu 8

Según Wikipedia, ( http://en.wikipedia.org/wiki/Intel_Core#Core_i7 ) no hay un Core i7 con 8 núcleos físicos, por lo que la idea de Hyperthreading debe ser el caso. Ignore sysctl y use el valor system_profiler para mayor precisión. La pregunta real es si puede o no ejecutar aplicaciones de manera eficiente con 4 núcleos (¿trabajos de compilación largos?) Sin interrumpir otros procesos.

La ejecución de un compilador en paralelo con 4 núcleos no parece afectar significativamente las operaciones regulares del sistema operativo. Así que quizás tratarla como 8 núcleos no es tan malo.


system_profiler SPHardwareDataType muestra que tengo 1 procesador y 4 núcleos.

[~] system_profiler SPHardwareDataType Hardware:

Hardware Overview: Model Name: MacBook Pro Model Identifier: MacBookPro9,1 Processor Name: Intel Core i7 Processor Speed: 2.6 GHz Number of Processors: 1 Total Number of Cores: 4 <snip>

[~]

Sin embargo, sysctl no está de acuerdo:

[~] sysctl -n hw.logicalcpu 8 [~] sysctl -n hw.physicalcpu 4 [~]

Pero sysctl parece correcto, ya que cuando ejecuto un programa que debería ocupar todas las ranuras de la CPU, veo que este programa lleva cerca del 800% del tiempo de CPU (en la parte superior):

PID COMMAND% CPU
4306 arriba 5.6
4304 java 745.7 4296 locationd 0.0


ACLARACIÓN

Cuando se hizo esta pregunta, el OP no dijo que quería el número de núcleos LÓGICOS en lugar del número real de núcleos, por lo que esta respuesta responde lógicamente (sin intención de hacerlo) con una forma de obtener el número real de núcleos físicos, no el número que el sistema operativo intenta virtualizar a través de HyperTreading Voodoo.

ACTUALIZACIÓN PARA MANEJAR FLAW EN YOSEMITE

Debido a un bug extraño en OS X Yosemite (y posiblemente versiones más nuevas, como el próximo El Capitán), he hecho una pequeña modificación. (La versión anterior todavía funcionó perfectamente bien si simplemente ignora STDERR, que es todo lo que la modificación hace por usted).

Cada otra respuesta dada aquí tampoco

  1. da información incorrecta
  2. No da información, debido a un error en la implementación del comando.
  3. corre increíblemente lento (tardando casi un minuto en completarse), o
  4. proporciona demasiados datos y, por lo tanto, puede ser útil para el uso interactivo, pero es inútil si desea usar los datos mediante programación (por ejemplo, como entrada a un comando como bundle install --jobs 3 donde desea el número en lugar de 3 ser uno menos que el número de núcleos que tienes, o al menos no más que el número de núcleos)

La forma de obtener solo el número de núcleos, de manera confiable, correcta, razonablemente rápida y sin información adicional ni caracteres adicionales en torno a la respuesta, es esta:

system_profiler SPHardwareDataType 2> /dev/null | grep ''Total Number of Cores'' | cut -d: -f2 | tr -d '' ''


$ system_profiler | grep ''Total Number Of Cores''