En esta página, se proporciona orientación para configurar tu entorno de Parallelstore para obtener el mejor rendimiento.
Recomendaciones generales
Quita cualquier alias de
ls
para mejorar el rendimiento predeterminado. En muchos sistemas, tiene un alias dels -color=auto
, que es mucho más lento con la configuración predeterminada de Parallelstore.Si el rendimiento de las operaciones de lista es lento, considera habilitar la caché para el montaje de dfuse.
Biblioteca de intercepción
La biblioteca libioil
se puede usar para mejorar el rendimiento de las operaciones de lectura y escritura en DFuse desde aplicaciones que usan libc. La biblioteca evita el kernel interceptando las llamadas de lectura y escritura de POSIX desde la aplicación para entregarlas directamente en el espacio de usuario. Consulta la biblioteca de intercepción para obtener más detalles.
En la mayoría de los casos, te recomendamos que uses la biblioteca de intercepción en una invocación por proceso o por aplicación.
Entre las situaciones en las que es posible que no quieras o no necesites usar la biblioteca de intercepción, se incluyen las siguientes:
- Solo las aplicaciones compiladas con libc pueden usar la biblioteca de intercepción.
- Si tienes una carga de trabajo que se beneficia de la caché, como acceder a los mismos archivos de forma reiterada, te recomendamos que no uses la biblioteca de intercepción.
- Si tu carga de trabajo requiere muchos metadatos, por ejemplo, si trabajas con muchos archivos pequeños o una lista de directorios muy grande, es probable que la biblioteca de intercepción no mejore el rendimiento.
La invocación de LD_PRELOAD
se puede establecer como una variable de entorno en tu
entorno de shell, pero hacerlo a veces puede causar problemas. En su lugar, te recomendamos que lo especifiques con cada comando.
Como alternativa, es posible vincular la biblioteca de intercepción a tu aplicación en el tiempo de compilación con la marca -lioil
.
Almacenamiento en caché de dfuse
El almacenamiento en caché está habilitado en dfuse
de forma predeterminada.
dfuse
usa dos marcas relacionadas con la caché cuando activa una instancia de Parallelstore:
--disable-wb-cache
usa el almacenamiento en caché de escritura directa en lugar de la escritura en caché de escritura.--disable-caching
inhabilita todo el almacenamiento en caché.
Las siguientes sugerencias se aplican al almacenamiento en caché y al rendimiento:
- Si usas la biblioteca de intercepción, se omite la caché de escritura. Te recomendamos que especifiques
--disable-wb-cache
cuando uses la biblioteca de intercepción. - Si tu carga de trabajo implica leer muchos archivos a la vez, debes inhabilitar el almacenamiento en caché.
- En el caso de las cargas de trabajo que involucran a muchos clientes que modifican archivos y las actualizaciones deben estar disponibles de inmediato para otros clientes, debes inhabilitar el almacenamiento en caché.
- Si tu carga de trabajo lee los mismos archivos de forma reiterada, el almacenamiento en caché puede mejorar el rendimiento. Esto es muy importante si los archivos caben en la memoria de los clientes.
dfuse
usa la caché de páginas de Linux para su almacenamiento en caché. Para las cargas de trabajo que consisten en E/S pequeñas a archivos grandes, además de habilitar la caché, puede ser beneficioso aumentar la lectura anticipada de dfuse. Para aumentar la lectura anticipada de dfuse, después de activar
dfuse
, ejecuta los siguientes comandos:echo 4096 > /sys/class/bdi/\$(mountpoint -d /mnt)/read_ahead_kb echo 100 > /sys/class/bdi/\$(mountpoint -d /mnt)/max_ratio
Si tus cargas de trabajo incluyen una combinación de las situaciones anteriores, puedes activar la misma instancia de Parallelstore en varios puntos de activación con diferentes parámetros de configuración de almacenamiento en caché.
Recuento de subprocesos y recuento de colas de eventos
Cuando actives tu instancia de Parallelstore, te recomendamos los siguientes valores para --thread-count
y --eq-count
:
- El valor de recuento de subprocesos no debe exceder la cantidad de núcleos de CPU virtual.
- El valor máximo recomendado de recuento de subprocesos es de entre 16 y 20. Más allá de esta cantidad, el beneficio de rendimiento es mínimo o nulo, independientemente de la cantidad de núcleos disponibles.
- El valor de la cola de eventos debe ser la mitad del valor del recuento de subprocesos.
Si tu carga de trabajo incluye una cantidad muy alta de operaciones de archivos pequeños y un acceso intensivo a los metadatos, puedes experimentar con el aumento de las cantidades más allá de estas recomendaciones.
Configuración de división de archivos
El seccionamiento de archivos es una técnica de almacenamiento de datos en la que un archivo se divide en bloques o franjas y se distribuye en varios destinos de almacenamiento. El seccionamiento de archivos puede aumentar el rendimiento, ya que permite lecturas y escrituras en paralelo en más de un destino de almacenamiento que respalda la instancia.
Cuando crees tu instancia de Parallelstore, puedes especificar una de las tres configuraciones de fragmentación de archivos:
- Mínimo
- Equilibrado
- Máximo
Esta configuración puede tener una importancia significativa en el rendimiento de Parallelstore. Para la mayoría de las cargas de trabajo, recomendamos el parámetro de configuración equilibrado, que debería ser una compensación razonable para la mayoría de las cargas de trabajo. Si el rendimiento con la configuración equilibrada no es aceptable, haz lo siguiente:
La configuración mínima puede mejorar el rendimiento de las cargas de trabajo con muchos archivos pequeños, en particular, cuando el tamaño promedio del archivo es inferior a 256 KB.
La configuración máxima puede mejorar el rendimiento de las cargas de trabajo con archivos muy grandes, generalmente superiores a 8 GB, en especial cuando muchos clientes comparten el acceso a los mismos archivos.
Para el ajuste avanzado, la herramienta daos
proporciona parámetros de configuración por archivo o por directorio. Experimentar con el ajuste avanzado conlleva riesgos relacionados con el rendimiento y, por lo general, no se recomienda. Consulta Información sobre la redundancia de datos y el fragmentación en los DAOS para obtener más detalles.
Configuración de la división de directorios
Cuando crees tu instancia de Parallelstore, puedes especificar una de las tres opciones de configuración de la fragmentación de directorios:
- Mínimo
- Equilibrado
- Máximo
Para la mayoría de las cargas de trabajo, recomendamos el parámetro de configuración máximo.
Para las cargas de trabajo que involucran muchas listas de directorios grandes, la configuración equilibrada o mínima puede mejorar el rendimiento de las listas. Sin embargo, el rendimiento de otras operaciones, en particular la creación de archivos, puede verse afectado.
multiusuario
Cuando uses la herramienta dfuse
para activar tu instancia de Parallelstore, te recomendamos que especifiques la marca --multi-user
. Esta marca le indica al kernel que ponga el sistema de archivos disponible para todos los usuarios de un cliente, en lugar de solo para el usuario que ejecuta el proceso de DFuse. Luego, DFuse aparece como un sistema de archivos genérico para varios usuarios, y se habilitan las llamadas estándar a chown
y chgrp
. El usuario que las creó es el propietario de todas las entradas del sistema de archivos, como es habitual en un sistema de archivos POSIX.
Cuando especifiques la marca --multi-user
, también debes actualizar /etc/fuse.conf
como raíz. Para ello, agrega la siguiente línea:
user_allow_other
Al parecer, no hay una implicación de rendimiento para activar tu instancia como multiusuario.
Configuración de codificación por borrado
La codificación por borrado se establece en 2+1. No se puede cambiar esta configuración. Se rechaza cualquier E/S que no use EC2+1.
Asignación de recursos de contenedores secundarios de Google Kubernetes Engine
En la mayoría de los casos, el rendimiento insatisfactorio de Google Kubernetes Engine y Parallelstore se debe a que no hay suficiente CPU o memoria asignada al contenedor lateral de Parallelstore. Para asignar recursos de forma adecuada, ten en cuenta las siguientes sugerencias:
Lee las consideraciones destacadas en Configura recursos para el contenedor de sidecar. Aprenderás por qué podrías necesitar aumentar la asignación de recursos y cómo configurar la asignación de recursos del contenedor de Sidecar con anotaciones de Pod.
Puedes usar el valor
0
para desactivar cualquier límite o solicitud de recursos en los clústeres Standard. Por ejemplo, si configurasgke-parallelstore/cpu-limit: 0
ygke-parallelstore/memory-limit: 0
, los límites de CPU y memoria del contenedor de sidecar estarán vacíos y se usarán las solicitudes predeterminadas. Este parámetro de configuración es útil cuando no sabes cuántos recursos necesita dfuse para tus cargas de trabajo y deseas que use todos los recursos disponibles en un nodo. Una vez que averigües cuántos recursos necesita dfuse según las métricas de tu carga de trabajo, puedes establecer los límites adecuados.En los clústeres de Autopilot, no puedes usar el valor
0
para anular los límites y las solicitudes de recursos del contenedor lateral. Debes establecer de forma explícita un límite de recursos más grande para el contenedor del contenedor secundario en los clústeres de Autopilot y confiar en las métricas de Google Cloud para decidir si es necesario aumentar el límite de recursos.