Funciones Asíncronas de Entrada/Salida en Oracle

Este post es una continuación de las funciones asíncronas de entrada/salida en Linux.

Oracle utiliza las funciones asíncronas disponibles a través del sistema operativo o bien las propias -cuando realiza accesos a capas propietarias como son SNTT, OCFS, etc.-, y debido a su instrumentación, que dicho sea de paso considero a Oracle uno de los mejores códigos instrumentados al día de hoy, encapsula en funciones propias las disponibles en el sistema operativo.  A menudo encontramos referencias a estas funciones en algún trace, o bien directamente en las librerías y archivos binarios de la aplicación.

¿Cómo encontrar la primer referencia para una librería como ésta sobre la cual no existe al día de hoy información en los manuales?  (con toda razón porque es información interna del software y que no tiene por qué exponerse).  Una búsqueda rápida en la vista v$event_name nos da detalles sobre el evento de E/S asíncrono en disco

EVENT# NAME
---------- ----------------------------------------------------------------
10 ksfd: async disk IO

A partir de esa referencia podemos buscar en el código de Oracle para buscar el resto de las funciones asíncronas.

En el caso de Linux las funciones de acceso asíncrono están en la librería libaio, no así para Oracle donde todas las funciones de acceso a disco están en la librería ksfd (Kernel Service Direct File), algunas de ellas son:

ksfdcre - crea un archivo

ksfdopn - abre un archivo

ksfdreopn -abre y lee un archivo

ksfdropn - lee bloques de un archivo

ksfdcopn - cierra un archivo

ksfdiopending - cancela la ejecución de las operaciones pendientes

ksfddel - elimina un archivo

ksfdrsz - cambia el tamaño de un archivo

En cuanto a las funciones asíncronas tenemos

ksfdwtio - encola una escritura asíncrona para su ejecución, define parámetros de tiempo máximo de ejecución antes de considerar la operación con error

ksfdsubmit - solicita la ejecución de una operación a un proceso esclavo

ksfdcme - solicita el código de error de una operación asignada a un proceso esclavo

ksfdsaiolmt - define los parámetros para definir los límites a actividades paralelizadas

ksfdfchkaio - solicita el código de retorno de una operación asíncrona

Me pareció interesante no encontrar referencia a funciones asíncronas de lectura, cosa que es relativamente lógica dado que no tiene sentido suponer que se ha leído cierto bloque de datos y hacerlo disponible a otros procesos cuando en realidad aún no ha sido leído del disco.

Existe también una librería ksfq que aparamentemente significa Kernel Service Queue File.

Considero de mucha utilidad conocer las funciones asíncronas para actividades de identificación de problemas a bajo nivel, sobre todo en ambientes que involucren paralelismo y clusters aunque también son útiles en ambientes estándar.

Advertisement

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.