sábado, julio 08, 2017

Skype for linux y los tonos DTMF

Increíble. Una aplicación de telefonía donde en la última versión (5.3.01, al menos) no anda el keypad para enviar tonos DTMF.

Obviamente, sin eso no podés hablar con el 90% de las empresas que tienen un preatendedor (“para ventas, marque 1; para soporte, marque 2, …”), que es para lo que fundamentalmente lo utilizo.

Si eso anduvo siempre… ¿qué necesidad había de cambiar el código?

Sabemos que Skype viene cayendo desde hace rato, pero caer… tan bajo?

martes, julio 04, 2017

Post instalación Debian GNU/Linux 9 (Stretch)

Más o menos cada dos años (aunque debería decir "when ready") sale una nueva versión de la rama estable de Debian, y así fue el caso en junio del corriente, pues liberaron Debian 9 "Stretch".

Para continuar la secuencia de recomendaciones post-instalación que inició con un post de Tomás, es buen momento de llevar mi humilde sugerencia de paquetes para obtener un escritorio usable en esta última versión.

Haciendo un copy-paste del post previo, éste tiene dos destinatarios principales:
  • para el que quiera tener una instalación de debian stretch (estable) usable, vale decir, con algunas aplicaciones más modernas que las que trae por defecto pero tratando de no salir demasiado de los repos oficiales;
  • y para mí, para no perder tiempo haciendo memoria en el caso de tener que reinstalar el sistema.
Y en la constante búsqueda de comodidad digital, cambio nuevamente de entorno de escritorio. Ahora el elegido es Cinnamon (las veces anteriores fueron GNOME y KDE) por tres cuestiones principales:
  • en primer lugar -y fundamentalmente- porque el explorador de archivos Nemo tiene árbol de directorios. Nautilus no lo tiene y eso lo hace inutilizable;
  • en segundo lugar, porque el entorno es estéticamente agradable y razonablemente liviano;
  • y finalmente, porque a diferencia de Mate, está hecho con GTK3 e integra adecuadamente la mayoría de las aplicaciones de escritorio.
Podría haber seguido utilizando KDE, la verdad es que está muy bien armado también, pero me di cuenta que sigo utilizando aplicaciones gtk (gedit, evince, meld) y pareció razonable el cambio.
Bueno, sin mas charla, vamos a lo que nos trae.

Paso 1

Esta instalación ocupará al menos 6 GB, por lo que tengan en cuenta cuanto desean dejar libre para los directorios de usuario y para el crecimiento/mantenimiento del sistema. Para comenzar, partimos de la instalación base de Debian Stretch. Para que se den una idea, hay que seguir la instalación tradicional y cuando presenta el uso que se dará (escritorio, servidor, etc) desmarcar todas las opciones y continuar normalmente.

Paso 2

Una vez instalado y hecho el primer arranque, luego de iniciar sesión lo que suelo hacer al toque es deshabilitar la opción de instalación de paquetes recomendados, puesto que pocas veces son necesarios y además engordan sobremanera el espacio ocupado por el sistema. Para ello basta con ejecutar la línea siguiente para que las próximas instalaciones eviten instalarlos.
echo "APT::Install-Recommends \"false\";" > \
    /etc/apt/apt.conf.d/90-powerup-disable-recommends.conf

Paso 3

Luego, sólo si están detrás de un proxy, hay varias formas de configurarlo: puede ser globalmente mediante las variables de entorno http_proxy y https_proxy o bien mediante la configuración de APT para aquellos casos donde dispongan de un servidor de caché como APT-Cacher. Por ejemplo:
PROXY="http://proxy.miorganizacion.com.ar:8080/"
export http_proxy=$PROXY
export https_proxy=$PROXY
echo "Acquire::http::Proxy \"$PROXY\";" > /etc/apt/apt.conf.d/90-powerup-proxy.conf

Paso 4

Verificar que están configurados los repositorios oficiales de la distribución. Por ahora omito backports, pero en un futuro será útil. Para ello, el archivo /etc/apt/sources.list debería listar, al menos, los siguientes:
deb http://debian.unnoba.edu.ar/debian/ stretch main contrib non-free
deb http://security.debian.org/debian-security/ stretch/updates main contrib non-free
deb http://debian.unnoba.edu.ar/debian/ stretch-updates main contrib non-free
deb http://deb.debian.org/debian/ stretch-backports main contrib non-free
Aquí utilizo el mirror que cordialmente provee la UNNOBA pues gracias a la Asociación Redes de Interconexión Universitaria estamos a pocos saltos de distancia. Traten de no atosigarla de peticiones o utilicen cualquier otro de los mirrors listados oficialmente.

Paso 5

Agregar repositorios externos (no oficiales) que contienen software útil. Este paso es un tanto complejo pues a partir de Stretch es necesario incorporar las claves públicas para poder descargar software adicional. Además, algunas aplicaciones sólo están disponibles para arquitectura de 64 bits. Desde luego, tengan en cuenta que adicionar un repositorio no oficial implica confiar en lo que sus administradores publiquen allí.

Paso 5.1. Paquetes requeridos para las operaciones posteriores

apt install apt-transport-https ca-certificates gnupg wget

Paso 5.2. Instalar las claves públicas de los repositorios

El nombre final indica qué aplicación contiene cada repositorio. Las claves deben alojarse en el directorio siguiente:
cd /etc/apt/trusted.gpg.d/
wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | gpg --dearmor > google-chrome.gpg
wget -q https://repo.skype.com/data/SKYPE-GPG-KEY -O- | gpg --dearmor > skype-stable.gpg
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | gpg --dearmor > vscode.gpg
wget -q "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xFC918B335044912E" -O- | gpg --dearmor > dropbox.gpg
wget -q "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x13B00F1FD2C19886" -O- | gpg --dearmor > spotify.gpg
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | gpg --dearmor > virtualbox.gpg

Paso 5.3. Definir los repositorios externos

Van todos en el directorio siguiente:
cd /etc/apt/sources.list.d/
# software solo disponible para amd64
echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > google-chrome.list
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" > skype-stable.list
echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > vscode.list
# software disponible para i386 y amd64
echo "deb [arch=i386,amd64] http://linux.dropbox.com/debian sid main" > dropbox.list
echo "deb http://repository.spotify.com stable non-free" > spotify.list
echo "deb http://download.virtualbox.org/virtualbox/debian stretch contrib" > virtualbox.list

Paso 6

Clásico: actualizar la lista de paquetes. Utilizaremos apt en vez de apt-get sólo por cuestión de gusto. Ustedes utilicen el que prefieran.
apt update

Paso 7

Instalar un entorno gráfico. Para la interfaz gráfica hay varios metapaquetes que se corresponden a cada entorno de escritorio: para Cinnamon instalaremos task-cinnamon-desktop; para KDE, instalen kde-plasma-desktop; para GNOME supongo que gnome-core alcanza (no lo sé con certeza); para XFCE instalen xfce4; para LXQT (lo que antes era LXDE) instalen lxqt; y para Mate el paquete mate-desktop-environment . Si alguno quedó afuera me avisan.

Tengo entendido que para placas GPU AMD/ATI ya no es necesario ningún driver privativo, pues el driver open-source Radeon alcanza, pero eventualmente podría ser necesario para placas GPU nVidia, donde el paquete a instalar es xserver-xorg-video-nvidia o alguno de los drivers que aparecen con el nombre nvidia-legacy. Si tienen un chipset Intel, con lo que viene por defecto suele alcanzar.

Sobre el entorno gráfico, como comentaba al inicio del artículo, mi recomendación esta vez es utilizar Cinnamon, pero instalo Openbox también pues suele ser útil para casos de urgencia. Los demás componentes de nombre extraño son bibliotecas que evitan que Cinnamon arroje advertencias o aplicaciones que se prefieren antes de las que vendrían por defecto.
apt install xorg lightdm mesa-utils openbox \
    xserver-xorg-input-all xserver-xorg-input-synaptics

apt install task-cinnamon-desktop cinnamon-l10n \
    desktop-base gir1.2-gtop-2.0 gir1.2-nmgtk-1.0 \
    network-manager-gnome pulseaudio firefox-esr \
    firefox-esr-l10n-es-ar thunderbird \
    thunderbird-l10n-es-ar

Superpaso 8

Instalar paquetes desde los repositorios oficiales. Como en la línea anterior, cada paquete está enlazado a su descripción en el sitio de Debian.

Paso 8.1. Controladores y servicios útiles

apt install acpi-support amd64-microcode cifs-utils \
    dkms fail2ban intel-microcode ntfs-3g ssh \
    unattended-upgrades uptimed

Paso 8.2. Herramientas útiles de línea de comando

apt install acpi alsa-utils aptitude buku bash-completion \
    clamav curl deborphan dialog ffmpeg file fish flac \
    hexedit htop iotop imagemagick iptraf-ng irqbalance \
    jmtpfs less lftp livestreamer manpages markdown mc \
    mlocate nano netcat-openbsd nethogs nmap p7zip-full \
    pv pxz qemu-kvm screen smbclient sshfs tcpdump \
    trickle tshark unrar unzip vbindiff w3m wavemon \
    wget youtube-dl zip

Paso 8.3. Lenguajes de programación, herramientas y documentación

apt install build-essential git git-doc git-man idle3 \
    ipython3 pylint3 python3 python3-doc sqlite3 \
    sqlite3-doc

Paso 8.4. Programas gráficos para fines variados (editores, reproductores, etc)

apt install default-jre filezilla fslint gufw hardinfo \
    keepassx mpv pavucontrol sound-theme-freedesktop \
    sqlitebrowser synaptic vlc wireshark-gtk \
    xdg-user-dirs-gtk xterm

apt install baobab blueman brasero cheese \
    gnome-font-viewer gnome-system-monitor gnote \
    gvfs-backends gvfs-fuse nemo-fileroller rhythmbox \
    transmission-gtk audacious file-roller gedit-plugins \
    ghex gimp gksu gucharmap leafpad meld sound-juicer 

Paso 8.5. Soporte y drivers para impresoras

apt install cups cups-browsed foomatic-db-compressed-ppds \
    foomatic-db-engine openprinting-ppds \
    printer-driver-cups-pdf system-config-printer \
    system-config-printer-udev

Paso 8.6. Iconos y temas de escritorio

apt install arc-theme breeze-icon-theme \
    clearlooks-phenix-theme faba-icon-theme \
    gnome-colors lxde-icon-theme mate-icon-theme \
    mate-icon-theme-faenza tango-icon-theme

Paso 8.7. Versión más moderna del kernel (4.11) y encabezados

Reemplacen amd64 por i386 si su arquitectura es de 32 bits. La primera línea instala la versión de kernel de Estable. La segunda línea (que dice stretch-backports) instala adicionalmente una versión más moderna.
apt install firmware-linux linux-headers-amd64 \
    linux-image-amd64 linux-doc

apt -t stretch-backports install firmware-linux \
    linux-headers-amd64 linux-image-amd64  \
    linux-doc

Paso 8.8. Versión más moderna de la suite LibreOffice (5.4)

apt -t stretch-backports install libreoffice \
    libreoffice-help-es libreoffice-l10n-es \ 
    libreoffice-style-breeze libreoffice-style-sifr \
    libreoffice-style-tango libreoffice-gnome \
    libreoffice-gtk3 hunspell-es

Paso 8.9. Firefox más moderno

Omitido pues la que viene por defecto (ERS 52) es una versión bastante moderna.

Paso 8.10. Tipografías

apt install fonts-cantarell fonts-croscore \
    fonts-crosextra-caladea fonts-crosextra-carlito  \
    fonts-dejavu fonts-dkg-handwriting fonts-awesome \
    fonts-humor-sans fonts-liberation fonts-noto \
    fonts-oxygen fonts-roboto

Paso 9

Instalar paquetes desde repositorios externos.
apt install dropbox virtualbox-5.1
Las aplicaciones siguientes sólo están disponibles en versión de 64 bits, por lo que si su arquitectura es 32... lo siento...
apt install code google-chrome-stable skypeforlinux
Spotify requiere libssl1.0.0, que no está en Stretch, por eso lo traemos desde el repo de jessie.
wget https://ftp.de.debian.org/debian/pool/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_amd64.deb
dpkg -i libssl1.0.0_*.deb
apt install spotify-client
Con eso queda listo prácticamente todo lo que proviene por fuera de Debian. Lo único queda pendiente es PyCharm, que como no tiene paquete disponible hay que bajarse el comprimido y alojarlo donde crean conveniente.

Paso 10

Listo, con eso les queda un sistema operativo casi perfecto.

El tema de escritorio de las capturas es Arc Darker, el conjunto de iconos es Gnome Wine y fuentes son Noto Sans UI Regular en su mayoría.

Todo lo documentado aquí está disponible en un sencillo script que instala Cinnamon y ejecuta todos estos pasos de un saque. Lo dejo disponible por si les sirve: stretch-powerup.sh (20170803)

Algunos consejos adicionales:
  • Para iniciar un programa rápidamente, usen la tecla Win y escriban parte del nombre. Alt+F2 también funciona, pero no tiene autocompletado.
  • La fuente Noto tiene un montón de variantes para distintos idiomas y por ello los cuadros de dialogo de selección de fuente se hacen eternos. Como usualmente uno sólo utiliza los alfabetos latinos, es posible desactivar aquellas fuentes que no se utilizan y reducir el listado. Para ello, descarguen este archivo 95-powerup-restrict-noto.conf y guardenlo en el directorio /etc/fonts/conf.d/
  • Para tener la tipografía clásica en las terminales Fx, ejecuten dpkg-reconfigure console-setup y en “Tipo de letra para la consola” seleccionen “No cambie la tipografía del arranque”.
Falta un paso adicional (súmamente útil) para mejorar toda la tipografía del sistema, pero eso queda para el post del mes que viene. Mientras tanto, si me olvido de algo, o ven algo que sobra, abajo están los comentarios…

martes, junio 27, 2017

Benchmark day 3: Kingston HyperX SSD 240GB (SHSS37A240G)

A principios del año pasado cedí en la tentación y terminé adquiriendo uno de los tan promocionados discos de estado sólido para el escritorio, aprovechando una oferta interesante de uno de los proveedores locales. Decirle "disco" a un dispositivo como éste es un anacronismo: no tiene nada de redondo, pero me permitiré mantener el término por cuestión de costumbre.

Para dar una definición en una línea, un Solid-State Drive o SSD es análogo a un "disco rígido" que almacena los datos persistentemente en memoria Flash, en vez de hacerlo sobre un dispositivo de rotación. La principal ventaja es una gran velocidad de acceso, además del hecho de no ser un dispositivo de base mecánica. No es la única diferencia contra un HDD, pero sí la más notable. Los SSD no son tecnología demasiado nueva, pero alrededor de 2008 / 2009 hubo un boom y desde allí comenzaron a verse más seguido en las casas de venta de hardware.

Entre las opciones del mercado, me quedé con un modelo Kingston Hyperx Savage SSD 240GB SATA 3 que hasta la fecha (año y medio de uso) se ha portado excelentemente bien (aquí las reviews). Y ahora que los tiempos no apremian tanto, puedo aprovechar para publicar el benchmark que hice en su momento, continuando con la serie de benchmarks de discos que venía realizando años atrás (ver parte I y parte II).

Antes de realizar los diagnósticos, debo mencionar que si van a hacer un análisis de atributos SMART en discos SSD de Kingston, conviene actualizar la base de unidades (drivedb.h) del paquete smartmontools mediante el comando update-smart-drivedb, pues Kingston ha variado la semántica de los atributos SMART para ciertas unidades SSD (como se detallan en este documento). Versiones antiguas de smartmontools utilizan los nombres genéricos para ciertos atributos y esto puede dar lugar a confusiones, tales como creer que una SSD está por fallar cuando no es así.

Siguen las especificaciones y más abajo los resultados por si a alguno le interesa. He remarcado los datos más relevantes.


Kingston HyperX Savage SSD 240GB
Modelo: KINGSTON SHSS37A240G
Capacidad: 240 GB
Interfaz: SATA III
Caché: 8 MB
Tipo: Disco de estado sólido
Tamaño de sector: 512 físico, 512 lógico
# hdparm -I /dev/sdb
ATA device, with non-removable media
        Model Number:       KINGSTON SHSS37A240G
        Serial Number:      [REDACTED]
        Firmware Revision:  SAFM00.r
        Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
        Supported: 9 8 7 6 5
        Likely used: 9
Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16
        sectors/track   63      63

        CHS current addressable sectors:   16514064
        LBA    user addressable sectors:  268435455
        LBA48  user addressable sectors:  468862128
        Logical  Sector size:                   512 bytes
        Physical Sector size:                   512 bytes
        Logical Sector-0 offset:                  0 bytes
        device size with M = 1024*1024:      228936 MBytes
        device size with M = 1000*1000:      240057 MBytes (240 GB)
        cache/buffer size  = 10104 KBytes
        Form Factor: 2.5 inch
        Nominal Media Rotation Rate: Solid State Device
Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 32
        Standby timer values: spec'd by Standard, no device specific minimum
        R/W multiple sector transfer: Max = 16  Current = 16
        Advanced power management level: 254
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled Supported:
           *    SMART feature set
                Security Mode feature set
           *    Power Management feature set
           *    Write cache
           *    Look-ahead
           *    Host Protected Area feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    NOP cmd
           *    DOWNLOAD_MICROCODE
           *    Advanced Power Management feature set
                SET_MAX security extension
           *    48-bit Address feature set
           *    Device Configuration Overlay feature set
           *    Mandatory FLUSH_CACHE
           *    FLUSH_CACHE_EXT
           *    SMART error logging
           *    SMART self-test
           *    General Purpose Logging feature set
           *    WRITE_{DMA|MULTIPLE}_FUA_EXT
           *    Disable Data Transfer After Error Detection
           *    {READ,WRITE}_DMA_EXT_GPL commands
           *    Segmented DOWNLOAD_MICROCODE
           *    Gen1 signaling speed (1.5Gb/s)
           *    Gen2 signaling speed (3.0Gb/s)
           *    Gen3 signaling speed (6.0Gb/s)
           *    Native Command Queueing (NCQ)
           *    Host-initiated interface power management
           *    Phy event counters
           *    unknown 76[13]
           *    unknown 76[14]
           *    unknown 76[15]
           *    DMA Setup Auto-Activate optimization
                Device-initiated interface power management
           *    Software settings preservation
           *    DOWNLOAD MICROCODE DMA command
           *    SET MAX SETPASSWORD/UNLOCK DMA commands
           *    WRITE BUFFER DMA command
           *    READ BUFFER DMA command
           *    DEVICE CONFIGURATION SET/IDENTIFY DMA commands
           *    Data Set Management TRIM supported (limit 8 blocks)
           *    Deterministic read ZEROs after TRIM
Security: 
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
                frozen
        not     expired: security count
                supported: enhanced erase
        2min for SECURITY ERASE UNIT. 2min for ENHANCED SECURITY ERASE UNIT. 
Checksum: correct
 
# smartctl -x /dev/sdb
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.6.0-0.bpo.1-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Phison Driven SSDs
Device Model:     KINGSTON SHSS37A240G
Serial Number:    [REDACTED]
Firmware Version: SAFM00.r
User Capacity:    240.057.409.536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Wed Jul  6 22:13:10 2016 ART
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
     was never started.
     Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0) The previous self-test routine completed
     without error or no self-test has ever 
     been run.
Total time to complete Offline 
data collection:   (   30) seconds.
Offline data collection
capabilities:     (0x5b) SMART execute Offline immediate.
     Auto Offline data collection on/off support.
     Suspend Offline collection upon new
     command.
     Offline surface scan supported.
     Self-test supported.
     No Conveyance Self-test supported.
     Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
     power-saving mode.
     Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
     General Purpose Logging supported.
Short self-test routine 
recommended polling time:   (   1) minutes.
Extended self-test routine
recommended polling time:   (   2) minutes.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Not_In_Use              0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Not_In_Use              0x0007   100   100   050    Pre-fail  Always       -       0
  5 Retired_Block_Count     0x0013   100   100   050    Pre-fail  Always       -       0
  7 Not_In_Use              0x000b   100   100   050    Pre-fail  Always       -       0
  8 Not_In_Use              0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       2488
 12 Power_Cycle_Count       0x0012   100   100   000    Old_age   Always       -       30
168 SATA_Phy_Error_Count    0x0012   100   100   000    Old_age   Always       -       0
170 Bad_Blk_Ct_Erl/Lat      0x0003   100   100   010    Pre-fail  Always       -       0/556
173 MaxAvgErase_Ct          0x0012   100   100   000    Old_age   Always       -       40 (Average 3)
175 Not_In_Use              0x0013   100   100   050    Pre-fail  Always       -       0
183 Unknown_Attribute       0x0012   100   100   100    Old_age   Always   FAILING_NOW 2621443
187 Reported_Uncorrect      0x0012   100   100   000    Old_age   Always       -       0
192 Unsafe_Shutdown_Count   0x0012   100   100   000    Old_age   Always       -       19
194 Temperature_Celsius     0x0023   076   060   030    Pre-fail  Always       -       24 (Min/Max 19/40)
196 Not_In_Use              0x0002   100   100   010    Old_age   Always       -       0
197 Not_In_Use              0x0032   100   100   000    Old_age   Always       -       0
199 CRC_Error_Count         0x000b   100   100   050    Pre-fail  Always       -       0
218 CRC_Error_Count         0x000b   100   100   050    Pre-fail  Always       -       0
231 SSD_Life_Left           0x0013   100   100   000    Pre-fail  Always       -       100
233 Flash_Writes_GiB        0x000b   100   100   000    Pre-fail  Always       -       570
240 Not_In_Use              0x0013   100   100   000    Pre-fail  Always       -       0
241 Lifetime_Writes_GiB     0x0012   100   100   000    Old_age   Always       -       538
242 Lifetime_Reads_GiB      0x0012   100   100   000    Old_age   Always       -       186
244 Average_Erase_Count     0x0002   100   100   000    Old_age   Always       -       3
245 Max_Erase_Count         0x0002   100   100   000    Old_age   Always       -       40
246 Total_Erase_Count       0x0012   100   100   000    Old_age   Always       -       239616

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      2481         -
# 2  Extended offline    Completed without error       00%       529         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
El atributo 183, indicado como FAILING NOW no ha de ser estimado pues según el documento de Kingston no corresponde a un atributo relevante.

# hdparm -tT /dev/sdb
/dev/sdb:
 Timing cached reads:   25580 MB in  2.00 seconds = 12801.73 MB/sec
 Timing buffered disk reads: 1580 MB in  3.00 seconds = 526.61 MB/sec
$ dd if=/dev/zero of=archivo.img count=1K bs=1M conv=fdatasync
1024+0 registros leídos
1024+0 registros escritos
1073741824 bytes (1,1 GB) copiados, 2,35045 s, 457 MB/s
Las pruebas de lectura con hdparm y con dd. Cuanto más velocidad indiquen, mejor, por supuesto.

palimpsest – Prueba de rendimiento de solo lectura (clic para agrandar)
Este gráfico representa la velocidad de lectura y el tiempo de acceso en distintas partes del disco. La línea azul representa la velocidad de lectura (asociada a la escala izquierda), mientras que los puntos verdes representan los tiempos de acceso en distintas ubicaciones del disco (asociada a la escala derecha).

Como puede verse, al ser un disco SSD (no rotativo), la velocidad de lectura es casi constante en todo el espacio, y se aprecia la diferencia notable entre los discos tradicionales. Los tiempos de acceso de la SSD rondan entre 0.1 y 0.2 ms (SSD) contra 20.1 ms (HDD), velocidad media de lectura de 554 MB/s contra 118 MB/s de un disco rígido tradicional.

Aquí dejo una comparativa de velocidad entre un disco rotativo y la SSD (clic para agrandar). Presten especial atención a las unidades.


Gráficos originales: parte I, parte II y parte III.

$ bonnie++
Version  1.97       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
hc-maurom    15864M  1514  99 521685  34 259973  24 +++++ +++ 645581  28 +++++ +++
Latency             10308us     246ms     296ms    2681us    3144us    2510us
Version  1.97       ------Sequential Create------ --------Random Create--------
hc-maurom           -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
Latency                50us     407us    1048us     667us       5us     442us

Los resultados de bonnie++ son bastante completos. Además de hacer mediciones de entrada/salida sobre el disco, mide también operaciones sobre el sistema de archivos (que por ahora no reviso). Lo relevante son las tasas de escritura y lectura en bloques, la cantidad de búsquedas por segundo (más es mejor) y la latencia de las mismas (menos es mejor). Al comparar contra otras mediciones, recuerden que las unidades en este último reporte son ms (milisegundos) y µs (microsegundos)!

Todas las pruebas fueron realizadas sobre una partición ext4.

martes, marzo 07, 2017

Recuperar el icono desaparecido de Dropbox en Linux

Recientemente he tenido algunos choques con Dropbox en Linux. El más incómodo es que en los escritorios modernos de Linux, léase KDE Plasma, Cinnamon, XFCE y otros, no aparece el ícono de Dropbox en el panel de notificaciones, aunque sí funciona la sincronización.

La resolución es bastante sencilla. Tan sencilla, de hecho, que es extraño que no la hayan agregado en el paquete oficial. Según Web Upd8, hay que hacer lo siguiente:

  1. Renombrar el archivo de autoinicio de Dropbox, ubicado en ~/.config/autostart/ y cambiar la línea donde dice Exec por Exec=dbus-launch dropbox start
  2. Copiar el archivo recién editado a ~/.local/share/applications/
  3. Desactivar el inicio automático de Dropbox, usando el comando dropbox autostart n para que no se vuelva a generar el archivo incorrecto. No se preocupen, Dropbox iniciará automáticamente de todas formas.
Toda esta secuencia de pasos se puede realizar rápidamente, como usuario común, con estas líneas:
cd ~/.config/autostart/
sed -i 's/^Exec=.*/Exec=dbus-launch dropbox start/' \
    dropbox.desktop
cp dropbox.desktop start-dropbox.desktop
mkdir -p ~/.local/share/applications/
mv dropbox.desktop ~/.local/share/applications/
dropbox autostart n
Y listo. Prueben cerrar y volver a iniciar la sesión, y con eso tendrán el clásico ícono indicador del estado de la sincronización.