proceso descontrolado desapegado

112

A veces veo que un proceso distnoted de repente gira y mastica el 100% de la CPU (en un núcleo) y una tonelada de memoria, a menudo en el entorno de 1.5G o menos. Esto sucede unas cuantas veces al día, comenzando hace aproximadamente un mes.

La línea de comando es /usr/sbin/distnoted agent , y se inicia con launchd , ninguno de los cuales ayuda mucho. Por lo general, se está ejecutando en algún lugar entre las 4 y las 24 horas antes de que gire y parta la CPU.

Las búsquedas web dicen que distnoted administra la entrega de notificaciones, y muchas otras personas reportan el mismo problema, pero aún no he encontrado una solución. Algunas personas descubren que al cerrar una aplicación responsable (por ejemplo, Skype) la detiene, pero aún no he encontrado un culpable en mi máquina. Generalmente solo ejecuto algunas aplicaciones: Emacs (24.2 de Homebrew), Firefox, Adium y Dash.

Estoy en Mavericks en una Retina MBP a finales de 2012 13. ¡Gracias de antemano!

Actualizar:

He activado el registro de distnoted en el registro del sistema tocando /var/log/do_dnserver_log , pero no ayuda mucho. Veo líneas como estas (uid 501 soy yo, 89 que no he encontrado todavía):

distnoted[80011]: # distnote server agent  absolute time: 48754.144787848   civil time: Wed Nov 20 10:52:03 2013   pid: 80011 uid: 501  root: no
distnoted[20]: # distnote server daemon  absolute time: 2.808112262   civil time: Tue Nov 19 09:52:24 2013   pid: 20 uid: 0  root: yes
distnoted[444]: # distnote server agent  absolute time: 16.656997509   civil time: Tue Nov 19 09:52:38 2013   pid: 444 uid: 501  root: no
distnoted[1271]: # distnote server agent  absolute time: 52.518265717   civil time: Tue Nov 19 09:53:14 2013   pid: 1271 uid: 89  root: no
distnoted[689]: Interruption - exiting now.

También he ejecutado sudo dtruss -p PID en un proceso de aceleración distnoted , y muestra líneas como esta:

kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
...
    
pregunta ryan 20.11.2013 - 02:59

14 respuestas

24

Resumen de la OP : esta fue una gran herramienta para la depuración. Originalmente me señaló a Spotlight reindexando el sistema de archivos, pero reduje las cosas que puede indexar, y aún vi el problema. Acabé configurando un trabajo cron para matar a los que aparecían regularmente. Ver respuesta más abajo.

Se puede hacer una depuración del error al crear el archivo /var/log/do_dnserver_log Esto hace que el servidor CFNotificationCenter ( distnoted ) registre información sobre todas las notificaciones al registro del sistema.

Comenzaría allí, reiniciaría y miraría el registro del sistema cuando la CPU se activara. Esto debería salir fácilmente del culpable.

Puede encontrar más información sobre CFNotificationCenter de depuración en los documentos oficiales del desarrollador aquí: Nota técnica TN2124 > CFNotificationCenter

    
respondido por el Temikus 22.11.2013 - 15:00
33

También he visto esto. Emacs 24.3.1, Mavericks 10.9.

Descubrí que el proceso anónimo se calma unos segundos después de salir de Emacs.

He presentado un error de Emacs aquí: enlace

    
respondido por el Don Tillman 24.11.2013 - 06:21
23

Sé que llego tarde a la fiesta pero esta es una pérdida de memoria específica de los emacs de Cocoa en Mavericks que se arregla en el tronco. Por ahora hay un parche que puedes usar para compilar emacs 24.3 con solo la corrección.

enlace

respondido por el user68323 22.01.2014 - 23:49
17

He estado teniendo los mismos problemas con distnoted en el capitan durante algún tiempo. Mi solución no es tan dura como matarla regularmente, más bien, compruebo que se esté quedando fuera de control (alto uso de la CPU) y luego la mato. Yo uso este script:

#!/bin/sh
#
# check for runaway distnoted, kill if necessary
#
PATH=/bin:/usr/bin
export PATH

ps -reo '%cpu,uid,pid,command' | 
    awk -v UID=$UID '
    /distnoted agent$/ && $1 > 100.0 && $2 == UID { 
        system("kill -9 " $3) 
    }
    '

El script se ejecuta desde cron cada minuto con esta línea en crontab:

*   *  *   *  *   sh "$HOME/bin/checkdistnoted"

En la práctica, la secuencia de comandos mata distnoted una o dos veces al día, y normalmente esto ocurre después de que se inicie backupd .

Para aquellos que no se sienten cómodos con el uso del shell OS X (línea de comando), el siguiente script instalará tanto el script checkdistnoted como la entrada crontab:

#!/bin/sh
#
# install $HOME/bin/checkdistnoted
# setup crontab to run every minute
# 
# MWR Apr 2016
#

INSTALLCMD=bin/checkdistnoted
cd "$HOME"
[ ! -d bin ] && mkdir bin
[ -f $INSTALLCMD ] || {
    cat > $INSTALLCMD <<-"!!"
    #!/bin/sh
    #
    # check for runaway distnoted, kill if necessary
    #

    PATH=/bin:/usr/bin
    export PATH

    ps -reo '%cpu,uid,pid,command' | 
        awk -v UID=$UID '
        /distnoted agent$/ && $1 >= 100.0 && $2 == UID { 
            # kill distnoted agent with >= 100% CPU and owned by me
            system("kill -9 " $3) 
        }
        '
!!
    chmod +x $INSTALLCMD 
    echo installed $INSTALLCMD
}

INSTALLCRON="# check for runaway distnoted every minute:
* * * * * sh \"\$HOME/$INSTALLCMD\""
crontab -l | grep -q '$HOME'/$INSTALLCMD || {
    crontab -l > mycron
    echo "$INSTALLCRON" >> mycron
    crontab mycron
    rm mycron
    echo updated crontab
}

Debe guardar lo anterior como install_checkdistnoted.sh en su escritorio, luego ejecute Applications/Utilities/Terminal y escriba:

cd Desktop
sh install_checkdistnoted.sh 

Si funciona completamente, imprimirá la confirmación de cada uno de los pasos. El script no sobrescribirá un script checkdistnoted o una entrada crontab existente.

[Se corrigió el error de sintaxis en el script de agosto de 2016 - MR]

    
respondido por el Michael Rourke 11.04.2016 - 02:02
7

Me di por vencido y adopté el enfoque de martillo: mátalo automáticamente, cada minuto. suspiro.

Pongo esto en ~/Library/LaunchAgents/org.snarfed.pkill_distnoted.plist :

<plist version="1.0">
<dict>
  <key>Label</key>
  <string>org.snarfed.pkill_distnoted</string>
  <key>ProgramArguments</key>
  <array>
    <string>pkill</string>
    <string>-KILL</string>
    <string>-f</string>
    <string>distnoted</string>
  </array>
  <key>StartInterval</key>
  <integer>60</integer>  <!-- every minute -->
</dict>
</plist>

y luego lo instaló con launchctl load ~/Library/LaunchAgents/org.snarfed.pkill_distnoted.plist .

    
respondido por el ryan 18.12.2013 - 08:42
4

He estado haciendo diferentes combinaciones de personalizaciones de extracción para reducir este comportamiento; Creo que es el modo comint. En 10.9 con emacs 24.3.1 de homebrew (o de emacsforosx), la fuga de emacs + notada (ambas aumentan lentamente en el consumo de memoria) ocurrirá con un búfer de modo shell abierto. No lo hará si solo visita archivos.

Solo quería anotarlo aquí, parece que gmane está abajo y sigo encontrando esta discusión en mi búsqueda dos veces por semana de seguimiento de este problema.

    
respondido por el Lang Martin 12.12.2013 - 16:33
2

Creo que solo puedo recordar 2 ocasiones en las que Distnoted se ha vuelto loco. En esta ocasión, había 2 de ellos en la parte superior de la lista de CPU y uno superaba el 400%. Sucedió poco después de volver a la oficina y conectar un par de pantallas externas, una de las cuales funciona con USB, supongo que podría estar relacionado. No hice nada más para intentar solucionar el problema antes de extraer la pantalla USB, lo que devolvió la cordura al instante. Y luego volver a enchufarlo resultó en un problema que no se repite.

¿Qué prueba qué? No tengo idea!

Los conecto cientos de veces y esta es la primera vez que se me ocurrió que podría estar relacionado. Y dado que no sucede cada vez que los conecto, entonces podría tener algo que ver con conectarlos demasiado rápido uno detrás del otro, o algo al azar así. De todos modos, pensé que lo compartiría en caso de que otras personas descubran que tiene algo que ver con conectar periféricos (si es lo que es una pantalla externa)

    
respondido por el petednz - fuzion 29.04.2015 - 08:22
2

Esto parece suceder cuando una aplicación de alguna manera hace un uso incorrecto de la API de notificación proporcionada por macOS. En mi caso el culpable fue iTerm2. Después de salir, los procesos distnoted salieron. Otros culpables que se han identificado son Emacs e iTunes.

    
respondido por el xApple 27.06.2016 - 22:31
0

Por lo que vale, pude solucionar este problema al deshabilitar mi software antivirus.

    
respondido por el David P. Caldwell 30.12.2013 - 21:16
0

Esto también me sucedió a mí, que se estaba volviendo loco. Después de cerrar un montón de aplicaciones, nada ayudó.

Luego noté que uno de esos diálogos de 'Informe a Apple' de un proceso Python se había dejado abierto toda la noche.

Aunque podría ser solo una coincidencia, después de cerrar el cuadro de diálogo, el proceso anulado se calmó.

    
respondido por el Chris 05.06.2014 - 19:11
0

Me encontré con un problema similar con problemas hace unos meses y no pude encontrar por qué el uso de la CPU fue superior al 100%. Finalmente, agregué una entrada a mi crontab a killall distnoted cada 2 minutos que resolvió mi problema.

Recientemente, he tenido un problema con el texto sublime donde al escribir subl path/to/file no se pudo abrir el archivo correctamente en el editor sublime. Un reinicio de la aplicación solucionó el problema, pero rápidamente volvió a ocurrir.

Después de atormentar mi cerebro hasta el final, identifiqué el hecho de que estaba matando a un proceso anónimo cada 2 minutos para explicar por qué el comando subl había dejado de funcionar misteriosamente.

La conclusión: el uso superalto de la CPU puede estar relacionado con lo sublime. Ahora que se ha actualizado lo sublime, espero que mi conclusión sea correcta, que el uso de la CPU sea bajo y que mi comando de subl vuelva a funcionar como se esperaba ahora que se está ejecutando de nuevo sin que mi crontab finalice el proceso cada 2 minutos.

    
respondido por el finiteloop 01.04.2015 - 09:45
0

También he tenido este problema desde hace bastante tiempo, pero de forma intermitente. Aparentemente, el notnot es parte de iTunes y también causó problemas en Windows . Cuando maté a iTunes (que estaba reproduciendo una canción), el proceso distonted que usaba el 400% de mi CPU (tengo 4 núcleos) dejó de ser un problema.

Así que mi respuesta, hasta que yo sepa mejor, es recomendarte que mates a iTunes, no a distnoted , y nos dejes saber qué sucede.

    
respondido por el vy32 28.02.2016 - 18:37
-1

También veo que hay distwed go haywire, en mi caso parece estar relacionado con fontd. Tengo tres carreras anotadas, una para _spotlight, una para _distnote y otra para mi usuario.

distnoted   0,0 6:39,85 2   0   101 _distnote   0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit
distnoted   0,0 0,05    2   0   642 _spotlight  0 bytes 0 bytes     Yes     -   No  No  No  0 bytes 0 bytes 64 bit
distnoted   82,1    1:19:38,30  49  1   353 nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit

Cada vez que se comen cotas cpu (30-90%), fontworker y fontd comen alrededor de 30-60% cpu cada uno. Tan pronto como mate a fontd, distnoted y fontworker para que mi usuario se calme. Matar a fontworker no hace nada. Después de un par de minutos, cuando se haya reiniciado fontd y se haya estado ejecutando durante un tiempo, todo comienza de nuevo.

fontworker  27,2    52,81   4   1   1073    nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit
fontd   32,6    1:07,41 6   0   1072    nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit

No tengo idea de por qué sucede esto ...

    
respondido por el Nils 16.05.2015 - 14:34
-2

Peter Buckley tiene razón, estoy equivocado. Odio cuando eso sucede.

No elimines los anotados, el próximo arranque no será divertido en absoluto.

wrong> I took a more sledgehammer approach
wrong> 
wrong>    sudo mv /usr/sbin/distnoted /usr/bin/distnoted.unwanted
wrong>
wrong> This is a work machine and I have no interest in sync'ing with iTunes.

    
respondido por el ConorR 23.12.2014 - 00:36

Lea otras preguntas en las etiquetas