En esta página se ofrecen directrices para configurar tu entorno de Parallelstore y obtener el mejor rendimiento.
Recomendaciones generales
Elimina los alias de
ls
para mejorar el rendimiento predeterminado. En muchos sistemas, se le asigna el aliasls -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 la posibilidad de habilitar el almacenamiento en 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 omite el kernel interceptando las llamadas de lectura y escritura de POSIX de la aplicación para atenderlas directamente en el espacio de usuario. Consulta más información sobre la biblioteca de intercepción.
En la mayoría de los casos, te recomendamos que uses la biblioteca de intercepción por proceso o por invocación de aplicación.
Estas son algunas situaciones en las que puede que no quieras o no necesites usar la biblioteca de intercepción:
- Solo las aplicaciones creadas con libc pueden usar la biblioteca de intercepción.
- Si tienes una carga de trabajo que se beneficia del almacenamiento en caché, como acceder a los mismos archivos repetidamente, te recomendamos que no uses la biblioteca de intercepción.
- Si tu carga de trabajo utiliza muchos metadatos (por ejemplo, si trabajas con muchos archivos pequeños o con un listado de directorios muy grande), es probable que la biblioteca de intercepción no mejore el rendimiento.
La invocación LD_PRELOAD
se puede definir como una variable de entorno en tu entorno de shell, pero esto puede provocar problemas en ocasiones. Te recomendamos que lo especifiques con cada comando.
También puedes vincular la biblioteca de intercepción a tu aplicación en tiempo de compilación con la marca -lioil
.
dfuse
almacenamiento en caché
El almacenamiento en caché está habilitado de forma predeterminada en dfuse
.
dfuse
usa dos marcas relacionadas con la caché al montar una instancia de Parallelstore:
--disable-wb-cache
usa el almacenamiento en caché de escritura directa en lugar del de escritura diferida.--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 el almacenamiento en caché de escritura diferida. Te recomendamos que especifiques
--disable-wb-cache
cuando uses la biblioteca de intercepción. - Si tu carga de trabajo implica leer muchos archivos una vez, debes inhabilitar el almacenamiento en caché.
- En el caso de las cargas de trabajo que implican que muchos clientes modifiquen archivos y que las actualizaciones deban estar disponibles inmediatamente para otros clientes, debes inhabilitar el almacenamiento en caché.
- Si tu carga de trabajo consiste en leer los mismos archivos repetidamente, el almacenamiento en caché puede mejorar el rendimiento. Esto es especialmente cierto si los archivos caben en la memoria de tus clientes.
dfuse
usa la caché de páginas de Linux para el almacenamiento en caché. En el caso de las cargas de trabajo que constan de pequeñas operaciones de E/S en archivos grandes, además de habilitar el almacenamiento en caché, puede ser útil aumentar la lectura anticipada de dfuse. Para aumentar la lectura anticipada de dfuse, después de montar
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 implican una combinación de los escenarios anteriores, puedes montar la misma instancia de Parallelstore en varios puntos de montaje con diferentes ajustes de almacenamiento en caché.
Número de subprocesos y número de colas de eventos
Al montar tu instancia de Parallelstore, te recomendamos que uses los siguientes valores para --thread-count
y --eq-count
:
- El valor del recuento de subprocesos no debe superar el número de núcleos de vCPU.
- El valor máximo recomendado para el recuento de subprocesos está entre 16 y 20. A partir de este número, el rendimiento apenas mejora, independientemente del número 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 implica un número muy elevado de operaciones con archivos pequeños y un acceso intenso a los metadatos, puedes probar a aumentar los números más allá de estas recomendaciones.
Ajuste de distribución de archivos
El fraccionamiento 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 fraccionamiento de archivos puede aumentar el rendimiento al permitir lecturas y escrituras paralelas en más de un destino de almacenamiento que respalde la instancia.
Cuando crees tu instancia de Parallelstore, podrás especificar uno de estos tres ajustes de distribución de archivos:
- Mínimo
- Equilibrado
- Máximo
Estos ajustes pueden influir significativamente en el rendimiento de Parallel Store. En la mayoría de las cargas de trabajo, recomendamos usar el ajuste equilibrado, que debería ser una solución razonable para la mayoría de las cargas de trabajo. Si el rendimiento con el ajuste equilibrado no es aceptable, haz lo siguiente:
El ajuste mínimo puede mejorar el rendimiento de las cargas de trabajo con muchos archivos pequeños, sobre todo cuando el tamaño medio de los archivos es inferior a 256 KB.
El ajuste máximo puede mejorar el rendimiento de las cargas de trabajo con archivos muy grandes (por lo general, de más de 8 GB), sobre todo cuando muchos clientes comparten el acceso a los mismos archivos.
Para realizar ajustes avanzados, la herramienta daos
ofrece ajustes por archivo o por directorio. Experimentar con la optimización avanzada conlleva riesgos relacionados con el rendimiento y, por lo general, no se recomienda. Consulta más información en el artículo Understanding Data Redundancy and Sharding in DAOS (Información sobre la redundancia y la fragmentación de datos en DAOS).
Configuración de franjas de directorio
Al crear tu instancia de Parallelstore, puedes especificar uno de los tres ajustes de distribución de directorios:
- Mínimo
- Equilibrado
- Máximo
En la mayoría de las cargas de trabajo, recomendamos usar el ajuste máximo.
En el caso de las cargas de trabajo que implican muchas listas de directorios grandes, los ajustes equilibrados o mínimos pueden mejorar el rendimiento de las listas. Sin embargo, el rendimiento de otras operaciones, especialmente la creación de archivos, puede verse afectado.
Multiusuario
Cuando utilices la herramienta dfuse
para montar tu instancia de Parallelstore, te recomendamos que especifiques la marca --multi-user
. Esta marca indica al kernel que debe hacer que el sistema de archivos esté disponible para todos los usuarios de un cliente, en lugar de solo para el usuario que ejecuta el proceso DFuse. DFuse se muestra como un sistema de archivos genérico multiusuario y se habilitan las llamadas estándar chown
y chgrp
. Todas las entradas del sistema de archivos son propiedad del usuario que las creó, 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 añadiendo la siguiente línea:
user_allow_other
Parece que no hay ninguna implicación en el rendimiento al montar tu instancia como multiusuario.
Ajuste de codificación de borrado
La codificación de borrado se ha definido como 2+1. Este ajuste no se puede cambiar. Se rechaza cualquier E/S que no use EC2+1.
Asignación de recursos de contenedores sidecar de Google Kubernetes Engine
En la mayoría de los casos, el rendimiento insatisfactorio con Google Kubernetes Engine y Parallelstore se debe a que no se ha asignado suficiente CPU o memoria al contenedor sidecar de Parallelstore. Para asignar los recursos correctamente, ten en cuenta las siguientes sugerencias:
Lee las consideraciones destacadas en Configurar recursos para el contenedor sidecar. Descubrirás por qué puede ser necesario aumentar la asignación de recursos y cómo configurar la asignación de recursos del contenedor sidecar mediante anotaciones de pods.
Puede usar el valor
0
para desactivar los límites o las solicitudes de recursos en los clústeres estándar. Por ejemplo, si se definengke-parallelstore/cpu-limit: 0
ygke-parallelstore/memory-limit: 0
, los límites de CPU y memoria del contenedor sidecar estarán vacíos y se usarán las solicitudes predeterminadas. Este ajuste es útil cuando no sabes cuántos recursos necesita dfuse para tus cargas de trabajo y quieres que use todos los recursos disponibles en un nodo. Una vez que hayas determinado cuántos recursos necesita dfuse en función de las métricas de tu carga de trabajo, puedes definir 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 sidecar. Debes definir explícitamente un límite de recursos mayor para el contenedor sidecar en los clústeres de Autopilot y usar las métricas para decidir si es necesario aumentar el límite de recursos. Google Cloud