Archivo de la etiqueta: disco

iostat & iotop: I/O debugging

[spanish]

Hace unos meses tuvimos un caso raro en un cliente: una aplicación no daba el rendimiento que debería, sin embargo más del 20% de CPU estaba en estado «idle» y no se había tocado la swap, por lo que no era por falta de recursos. Fijándonos mejor en los porcentajes de CPU que daba vmstat, vimos que alrededor del 30% estaba en I/O, por lo que el problema era un cuello de botella en entrada/salida.

Para averiguar la causa utilizamos dos programas:

  • iostat (viene en el paquete sysstat): similar a vmstat o ifstat, pero para operaciones de I/O. Muestra por dispositivo y por partición, cada X segundos, la cantidad de bloques leídos/escritos.
  • iotop: como el top de toda la vida, pero ordena los procesos por consumo de I/O.

Con ayuda de éstas dos utilidades es fácil detectar qué programa está causando el cuello de botella, y en qué dispositivo.

En nuestro caso, el problema era una controladora RAID hardware que estaba dando muy mal rendimiento de escritura, unida a un programa que realizaba del orden de 15 pequeñas escrituras aleatorias por segundo.

[/spanish]

[english]

A couple of months ago, we had an interesting issue at a customer: an application wasn’t performing well, but the system had more than 20% CPU idle and wasn’t swapping memory, so it wasn’t a lack of resources. After a deeper look into vmstat, we saw a constant 30% of CPU in I/O state. We had some kind of I/O bottleneck.

To discover the root of the issue we used two programs:

  • iostat (comes with the sysstat package): similar to vmstat or ifstat, but shows I/O operations per device and partition, updating its output every X seconds.
  • iotop: like the classic top, sorting the processes according to their I/O rate.

By using these two utilities it’s quite easy to discover which process is creating the I/O bottleneck, and on which particular device.

In our case, the problem was a RAID controller that was giving a terrible writing performance, coupled with a process that was doing around 15 small, random access writes per second.

[/english]

Liberar espacio extra en MacOS X

[spanish]

Dos programitas útiles para MacOS X:

  • AppCleaner: ayuda a desinstalar programas completamente, incluyendo librerías, plugins, y otros datos que se copian fuera de la carpeta Aplicaciones y por tanto no se eliminan si simplemente arrastramos la aplicación a la papelera. Aunque tal vez la mejor forma de describirlo es como un AppZapper gratis. :) Es clavado, la interfaz, forma de uso, todo.
  • MonoLingual: tanto el sistema MacOS X como la mayoría de aplicaciones que instalemos incluyen traducciones a n-mil millones de idiomas, que ocupan espacio en el disco duro. Además, hoy en día la mayoría de programas distribuyen «universal binaries», que no es ni más ni menos que un «pack» con el ejecutable para Intel y para PowerPC. Más espacio desperdiciado. MonoLingual permite eliminar todos los idiomas que no vayamos a usar, así como los binarios de la arquitectura que no sea la nuestra. O volviendo a los similes como en el caso anterior: como el Xslimmer, pero gratis. Para que os hagáis una idea: eliminando todos los idiomas salvo el español y el inglés, y los binarios para PowerPC, me ha liberado 2.5Gb.

[/spanish]
[english]

Two useful MacOS X utilities:

  • AppCleaner: it helps you to completely uninstall applications from your system. When you install an app it copies several files (like plugins, extra libraries, etc.) outside the Applications folder, but those files don’t get deleted when you drag the app to the trash can. But I think that the best way to describe AppCleaner is saying it’s a free AppZapper clone. :) It looks exactly the same, same interface, same functionality, usage, everything.
  • MonoLingual: both the MacOS X system itself and almost every app you can think of come with translations for a shitload of foreign languages, which are a waste of hard drive space if you’re not going to use them. Besides, nowadays almost every binary is a «Universal Binary», which is just a package with an Intel binary and a PowerPC one. Even more wasted space. MonoLingual allows you to remove every language you don’t need, and the binaries for the architecture you’re not going to use. Or like with AppCleaner: it’s a free Xslimmer clone. Just to get you an idea: after removing all translation files but the Spanish and English ones, and the PowerPC binaries, it has freed 2.5Gb from my system.

[/english]