Maison  >  Article  >  base de données  >  Analyse AIO dans Oracle

Analyse AIO dans Oracle

一个新手
一个新手original
2017-09-08 10:50:421165parcourir

Les E/S asynchrones Linux (AIO) sont une fonctionnalité améliorée fournie dans le noyau Linux. Il s'agit d'une fonctionnalité standard du noyau Linux 2.6. L'idée de base derrière AIO est de permettre à un processus de lancer de nombreuses opérations d'E/S sans bloquer ni attendre la fin d'une opération. Le processus peut récupérer les résultats de l'opération d'E/S ultérieurement ou lorsqu'il est averti que l'opération d'E/S est terminée.

E/S synchrone : le thread démarre une opération d'E/S, puis entre immédiatement dans l'état d'attente, et ne se réveille que lorsque l'opération d'E/S est terminée pour continuer l'exécution.
IO asynchrone : le thread envoie une requête IO au noyau, puis continue de traiter d'autres choses. Une fois que le noyau a terminé la requête IO, il informera le thread que l'opération IO est terminée

1. -- Vérifiez si le système utilise des E/S asynchrones . Slab est l'allocateur de mémoire Linux et des structures de mémoire liées à AIO ont été allouées.

more /proc/slabinfo |grep kio
[root@localhost ~]# grep kio /proc/slabinfo
kioctx 0 0 384 10 1 : tunables 54 27 0 : slabdata 0 0 0
kiocb 0 0 256 15 1 : tunables 120 60 0 : slabdata 0 0 0

Vérifiez que la ligne kiocb affiche 0, indiquant que les IO asynchrones ne sont pas démarrées.

2. Vérifiez si l'io asynchrone est activé dans la base de données

(11G)SYS@qixindb> show parameter disk_asynch_io
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
disk_asynch_io boolean TRUE
(11G)SYS@qixindb> show parameter filesystem
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
filesystemio_options string none
filesystemio_options 的四种值:
ASYNCH: enable asynchronous I/O on file system files, which has no timing requirement for transmission.
在文件系统文件上启用异步I/O,在数据传送上没有计时要求。
DIRECTIO: enable direct I/O on file system files, which bypasses the buffer cache.
在文件系统文件上启用直接I/O,绕过buffer cache。
SETALL: enable both asynchronous and direct I/O on file system files.
在文件系统文件上启用异步和直接I/O。
NONE: disable both asynchronous and direct I/O on file system files.
在文件系统文件上禁用异步和直接I/O。

3. Oracle a lié le package aio

[oracle@localhost ~]$ /usr/bin/ldd $ORACLE_HOME/bin/oracle | grep libaio
libaio.so.1 => /lib64/libaio.so.1 (0x0000003e13000000)
Remarque : la vérification montre qu'Oracle a lié le package aio


4. Ajustez les paramètres de la base de données pour activer aio

Le paramètre filesystemio_options dans la base de données est défini sur aucun. cet asynchrone n'est pas configuré dans Oracle IO,
Ici, vous pouvez ajuster le paramètre filesystemio_options dans la base de données pour setall

SQL> alter system set filesystemio_options = setall scope=spfile; 
SQL> alter system set disk_asynch_io = true scope=spfile; 
SQL> shutdown immediate;
SQL> startup;
Vérifiez si aio est efficace


Supplémentaire : des attentes de tampon gratuites apparaissent Lorsque l'attente d'événements ou que io n'est pas assez forte, vous pouvez envisager d'activer aio.
[oracle@localhost ~]$ more /proc/slabinfo |grep kio
kioctx 130 160 384 10 1 : tunables 54 27 8 : slabdata 16 16 0
kiocb 16 30 256 15 1 : tunables 120 60 8 : slabdata 2 2 1

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn