青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

AIX上的aio(轉(zhuǎn)貼)

http://www.loveunix.net/discuz/viewthread.php?tid=51746&extra=page%3D1

Asynchronous I/O Subsystem

Synchronous I/O occurs while you wait. Applications processing cannot continue until the I/O operation is complete.

In contrast, asynchronous I/O operations run in the background and do not block user applications. This improves performance, because I/O operations and applications processing can run simultaneously.

Using asynchronous I/O will usually improve your I/O throughput, especially when you are storing data in raw logical volumes (as opposed to Journaled file systems). The actual performance, however, depends on how many server processes are running that will handle the I/O requests.

Many applications, such as databases and file servers, take advantage of the ability to overlap processing and I/O. These asynchronous I/O operations use various kinds of devices and files. Additionally, multiple asynchronous I/O operations can run at the same time on one or more devices or files.

Each asynchronous I/O request has a corresponding control block in the application's address space. When an asynchronous I/O request is made, a handle is established in the control block. This handle is used to retrieve the status and the return values of the request.

Applications use the aio_read and aio_write subroutines to perform the I/O. Control returns to the application from the subroutine, as soon as the request has been queued. The application can then continue processing while the disk operation is being performed.

A kernel process (kproc), called a server, is in charge of each request from the time it is taken off the queue until it completes. The number of servers limits the number of disk I/O operations that can be in progress in the system simultaneously.

The default values are minservers=1 and maxservers=10. In systems that seldom run applications that use asynchronous I/O, this is usually adequate. For environments with many disk drives and key applications that use asynchronous I/O, the default is far too low. The result of a deficiency of servers is that disk I/O seems much slower than it should be. Not only do requests spend inordinate lengths of time in the queue, but the low ratio of servers to disk drives means that the seek-optimization algorithms have too few requests to work with for each drive.

Note:
Asynchronous I/O will not work if the control block or buffer is created using mmap (mapping segments).

In AIX 5.2 there are two Asynchronous I/O Subsystems. The original AIX AIO, now called LEGACY AIO, has the same function names as the posix compliant POSIX AIO. The major differences between the two involve different parameter passing. Both subsytems are defined in the /usr/include/sys/aio.h file. The _AIO_AIX_SOURCE macro is used to distinguish between the two versions.

Note:
The _AIO_AIX_SOURCE macro used in the /usr/include/sys/aio.h file must be defined when using this file to compile an aio application with the LEGACY AIO function definitions. The default compile using the aio.h file is for an application with the new POSIX AIO definitions. To use the LEGACY AIO function defintions do the following in the source file:
#define _AIO_AIX_SOURCE
#include <sys/aio.h>
or when compiling on the command line, type the following:
xlc ... -D_AIO_AIX_SOURCE ... classic_aio_program.c

For each aio function there is a legacy and a posix definition. LEGACY AIO has an additional aio_nwait function, which although not a part of posix definitions has been included in POSIX AIO to help those who want to port from LEGACY to POSIX definitions. POSIX AIO has an additional aio_fsync function, which is not included in LEGACY AIO. For a list of these functions, see Asynchronous I/O Subroutines.

How Do I Know if I Need to Use AIO?

Using the vmstat command with an interval and count value, you can determine if the CPU is idle waiting for disk I/O. The wa column details the percentage of time the CPU was idle with pending local disk I/O.

If there is at least one outstanding I/O to a local disk when the wait process is running, the time is classified as waiting for I/O. Unless asynchronous I/O is being used by the process, an I/O request to disk causes the calling process to block (or sleep) until the request has been completed. Once a process's I/O request completes, it is placed on the run queue.

A wa value consistently over 25 percent may indicate that the disk subsystem is not balanced properly, or it may be the result of a disk-intensive workload.

Note:
AIO will not relieve an overly busy disk drive. Using the iostat command with an interval and count value, you can determine if any disks are overly busy. Monitor the %tm_act column for each disk drive on the system. On some systems, a %tm_act of 35.0 or higher for one disk can cause noticeably slower performance. The relief for this case could be to move data from more busy to less busy disks, but simply having AIO will not relieve an overly busy disk problem.

SMP Systems
For SMP systems, the us, sy, id and wa columns are only averages over all processors. But keep in mind that the I/O wait statistic per processor is not really a processor-specific statistic; it is a global statistic. An I/O wait is distinguished from idle time only by the state of a pending I/O. If there is any pending disk I/O, and the processor is not busy, then it is an I/O wait time. Disk I/O is not tracked by processors, so when there is any I/O wait, all processors get charged (assuming they are all equally idle).

How Many AIO Servers Am I Currently Using?
To determine you how many Posix AIO Servers (aios) are currently running, type the following on the command line:
pstat -a | grep posix_aioserver | wc -l

Note:
You must run this command as the root user.
To determine you how many Legacy AIO Servers (aios) are currently running, type the following on the command line:
pstat -a | egrep ' aioserver' | wc -l??
Note:
You must run this command as the root user.
If the disk drives that are being accessed asynchronously are using either the Journaled File System (JFS) or the Enhanced Journaled File System (JFS2), all I/O will be routed through the aios kprocs.
If the disk drives that are being accessed asynchronously are using a form of raw logical volume management, then the disk I/O is not routed through the aios kprocs. In that case the number of servers running is not relevant.

However, if you want to confirm that an application that uses raw logic volumes is taking advantage of AIO, you can disable the fast path option via SMIT. When this option is disabled, even raw I/O will be forced through the aios kprocs. At that point, the pstat command listed in preceding discussion will work. You would not want to run the system with this option disabled for any length of time. This is simply a suggestion to confirm that the application is working with AIO and raw logical volumes.
At releases earlier than AIX 4.3, the fast path is enabled by default and cannot be disabled.
How Many AIO Servers Do I Need?
Here are some suggested rules of thumb for determining what value to set maximum number of servers to:
1.? ? ? ? The first rule of thumb suggests that you limit the maximum number of servers to a number equal to ten times the number of disks that are to be used concurrently, but not more than 80. The minimum number of servers should be set to half of this maximum number.
2.? ? ? ? Another rule of thumb is to set the maximum number of servers to 80 and leave the minimum number of servers set to the default of 1 and reboot. Monitor the number of additional servers started throughout the course of normal workload. After a 24-hour period of normal activity, set the maximum number of servers to the number of currently running aios + 10, and set the minimum number of servers to the number of currently running aios - 10.
In some environments you may see more than 80 aios KPROCs running. If so, consider the third rule of thumb.
3.? ? ? ? A third suggestion is to take statistics using vmstat -s before any high I/O activity begins, and again at the end. Check the field iodone. From this you can determine how many physical I/Os are being handled in a given wall clock period. Then increase the maximum number of servers and see if you can get more iodones in the same time period.
Prerequisites
To make use of asynchronous I/O the following fileset must be installed:
bos.rte.aio
To determine if this fileset is installed, use:
lslpp -l bos.rte.aio
You must also make the aio0 or posix_aio0 device available using SMIT.
smit chgaio
smit chgposixaio

STATE to be configured at system restart available
or
smit aio
smit posixaio

Configure aio now
Functions of Asynchronous I/O
Functions provided by the asynchronous I/O facilities are:
?? ? ? ? Large File-Enabled Asynchronous I/O
?? ? ? ? Nonblocking I/O
?? ? ? ? Notification of I/O completion
?? ? ? ? Cancellation of I/O requests
Large File-Enabled Asynchronous I/O
The fundamental data structure associated with all asynchronous I/O operations is struct aiocb. Within this structure is the aio_offset field which is used to specify the offset for an I/O operation.
Due to the signed 32-bit definition of aio_offset, the default asynchronous I/O interfaces are limited to an offset of 2G minus 1. To overcome this limitation, a new aio control block with a signed 64-bit offset field and a new set of asynchronous I/O interfaces has been defined. These 64–bit definitions end with "64".
The large offset-enabled asynchronous I/O interfaces are available under the _LARGE_FILES compilation environment and under the _LARGE_FILE_API programming environment. For further information, see Writing Programs That Access Large Files in AIX 5L Version 5.3 General Programming Concepts: Writing and Debugging Programs.
Under the _LARGE_FILES compilation environment, asynchronous I/O applications written to the default interfaces see the following redefinitions:
Item? ? ? ? Redefined To Be? ? ? ? Header File
struct aiocb? ? ? ? struct aiocb64? ? ? ? sys/aio.h
aio_read()? ? ? ? aio_read64()? ? ? ? sys/aio.h
aio_write()? ? ? ? aio_write64()? ? ? ? sys/aio.h
aio_cancel()? ? ? ? aio_cancel64()? ? ? ? sys/aio.h
aio_suspend()? ? ? ? aio_suspend64()? ? ? ? sys/aio.h
aio_listio()? ? ? ? aio_listio64()? ? ? ? sys/aio.h
aio_return()? ? ? ? aio_return64()? ? ? ? sys/aio.h
aio_error()? ? ? ? aio_error64()? ? ? ? sys/aio.h
For information on using the _LARGE_FILES environment, see Porting Applications to the Large File Environment in AIX 5L Version 5.3 General Programming Concepts: Writing and Debugging Programs
In the _LARGE_FILE_API environment, the 64-bit API interfaces are visible. This environment requires recoding of applications to the new 64-bit API name. For further information on using the _LARGE_FILE_API environment, see Using the 64-Bit File System Subroutines in AIX 5L Version 5.3 General Programming Concepts: Writing and Debugging Programs
Nonblocking I/O
After issuing an I/O request, the user application can proceed without being blocked while the I/O operation is in progress. The I/O operation occurs while the application is running. Specifically, when the application issues an I/O request, the request is queued. The application can then resume running before the I/O operation is initiated.
To manage asynchronous I/O, each asynchronous I/O request has a corresponding control block in the application's address space. This control block contains the control and status information for the request. It can be used again when the I/O operation is completed.
Notification of I/O Completion
After issuing an asynchronous I/O request, the user application can determine when and how the I/O operation is completed. This information is provided in three ways:
?? ? ? ? The application can poll the status of the I/O operation.
?? ? ? ? The system can asynchronously notify the application when the I/O operation is done.
?? ? ? ? The application can block until the I/O operation is complete.
Polling the Status of the I/O Operation
The application can periodically poll the status of the I/O operation. The status of each I/O operation is provided in the application's address space in the control block associated with each request. Portable applications can retrieve the status by using the aio_error subroutine.The aio_suspend subroutine suspends the calling process until one or more asynchronous I/O requests are completed.
Asynchronously Notifying the Application When the I/O Operation Completes
Asynchronously notifying the I/O completion is done by signals. Specifically, an application may request that a SIGIO signal be delivered when the I/O operation is complete. To do this, the application sets a flag in the control block at the time it issues the I/O request. If several requests have been issued, the application can poll the status of the requests to determine which have actually completed.
Blocking the Application until the I/O Operation Is Complete
The third way to determine whether an I/O operation is complete is to let the calling process become blocked and wait until at least one of the I/O requests it is waiting for is complete. This is similar to synchronous style I/O. It is useful for applications that, after performing some processing, need to wait for I/O completion before proceeding.
Cancellation of I/O Requests
I/O requests can be canceled if they are cancelable. Cancellation is not guaranteed and may succeed or not depending upon the state of the individual request. If a request is in the queue and the I/O operations have not yet started, the request is cancellable. Typically, a request is no longer cancelable when the actual I/O operation has begun.
Asynchronous I/O Subroutines
Note:The 64-bit APIs are as follows:
The following subroutines are provided for performing asynchronous I/O:
Subroutine? ? ? ? Purpose
aio_cancel or aio_cancel64
Cancels one or more outstanding asynchronous I/O requests.
aio_error or aio_error64
Retrieves the error status of an asynchronous I/O request.
aio_fsync
Synchronizes asynchronous files.
lio_listio or lio_listio64
Initiates a list of asynchronous I/O requests with a single call.
aio_nwait
Suspends the calling process until n asynchronous I/O requests are completed.
aio_read or aio_read64
Reads asynchronously from a file.
aio_return or aio_return64
Retrieves the return status of an asynchronous I/O request.
aio_suspend or aio_suspend64
Suspends the calling process until one or more asynchronous I/O requests is completed.
aio_write or aio_write64
Writes asynchronously to a file.
Order and Priority of Asynchronous I/O Calls

An application may issue several asynchronous I/O requests on the same file or device. However, because the I/O operations are performed asynchronously, the order in which they are handled may not be the order in which the I/O calls were made. The application must enforce ordering of its own I/O requests if ordering is required.

Priority among the I/O requests is not currently implemented. The aio_reqprio field in the control block is currently ignored.

For files that support seek operations, seeking is allowed as part of the asynchronous read or write operations. The whence and offset fields are provided in the control block of the request to set the seek parameters. The seek pointer is updated when the asynchronous read or write call returns.
Subroutines Affected by Asynchronous I/O

The following existing subroutines are affected by asynchronous I/O:
?? ? ? ? The close subroutine
?? ? ? ? The exit subroutine
?? ? ? ? The exec subroutine
?? ? ? ? The fork subroutine

If the application closes a file, or calls the _exit or exec subroutines while it has some outstanding I/O requests, the requests are canceled. If they cannot be canceled, the application is blocked until the requests have completed. When a process calls the fork subroutine, its asynchronous I/O is not inherited by the child process.

One fundamental limitation in asynchronous I/O is page hiding. When an unbuffered (raw) asynchronous I/O is issued, the page that contains the user buffer is hidden during the actual I/O operation. This ensures cache consistency. However, the application may access the memory locations that fall within the same page as the user buffer. This may cause the application to block as a result of a page fault. To alleviate this, allocate page aligned buffers and do not touch the buffers until the I/O request using it has completed.

Changing Attributes for Asynchronous I/O
You can change attributes relating to asynchronous I/O using the chdev command or SMIT. Likewise, you can use SMIT to configure and remove (unconfigure) asynchronous I/O. (Alternatively, you can use the mkdev and rmdev commands to configure and remove asynchronous I/O). To start SMIT at the main menu for asynchronous I/O, enter smit aio or smit posixaio.

MINIMUM number of servers
Indicates the minimum number of kernel processes dedicated to asynchronous I/O processing. Because each kernel process uses memory, this number should not be large when the amount of asynchronous I/O expected is small.

MAXIMUM number of servers per cpu
Indicates the maximum number of kernel processes per cpu that are dedicated to asynchronous I/O processing. This number when multiplied by the number of cpus indicates the limit on I/O requests in progress at one time, and represents the limit for possible I/O concurrency.

Maximum number of REQUESTS
Indicates the maximum number of asynchronous I/O requests that can be outstanding at one time. This includes requests that are in progress as well as those that are waiting to be started. The maximum number of asynchronous I/O requests cannot be less than the value of AIO_MAX, as defined in the /usr/include/sys/limits.h file, but it can be greater. It would be appropriate for a system with a high volume of asynchronous I/O to have a maximum number of asynchronous I/O requests larger than AIO_MAX.

Server PRIORITY
Indicates the priority level of kernel processes dedicated to asynchronous I/O. The lower the priority number is, the more favored the process is in scheduling. Concurrency is enhanced by making this number slightly less than the value of PUSER, the priority of a normal user process. It cannot be made lower than the values of PRI_SCHED.
Because the default priority is (40+nice), these daemons will be slightly favored with this value of (39+nice). If you want to favor them more, make changes slowly. A very low priority can interfere with the system process that require low priority.
Attention: Raising the server PRIORITY (decreasing this numeric value) is not recommended because system hangs or crashes could occur if the priority of the AIO servers is favored too much. There is little to be gained by making big priority changes.
PUSER and PRI_SCHED are defined in the /usr/include/sys/pri.h file.

STATE to be configured at system restart
Indicates the state to which asynchronous I/O is to be configured during system initialization. The possible values are:
?? ? ? ? defined, which indicates that the asynchronous I/O will be left in the defined state and not available for use
?? ? ? ? available, which indicates that asynchronous I/O will be configured and available for use

STATE of FastPath
The AIO Fastpath is used only on character devices (raw logical volumes) and sends I/O requests directly to the underlying device. The file system path used on block devices uses the aio kprocs to send requests through file system routines provided to kernel extensions. Disabling this option forces all I/O activity through the aios kprocs, including I/O activity that involves raw logical volumes. In AIX 4.3 and earlier, the fast path is enabled by default and cannot be disabled.

64-bit Enhancements
Asynchronous I/O (AIO) has been enhanced to support 64-bit enabled applications. On 64-bit platforms, both 32-bit and 64-bit AIO can occur simultaneously.
The struct aiocb, the fundamental data structure associated with all asynchronous I/O operation, has changed. The element of this struct, aio_return, is now defined as ssize_t. Previously, it was defined as an int. AIO supports large files by default. An application compiled in 64-bit mode can do AIO to a large file without any additional #define or special opening of those files.




看來很久之前的以訛傳訛是在是影響太厲害了。
1、aio server不是進(jìn)程,是kernel threading,所以效率才高,要不不如用用戶態(tài)的thread或者processor實(shí)現(xiàn)AIO算了。
2??and 3 顯然find使用的syscall是read而不是aio_read,所以只能用阻塞IO,就算你配置了AIO ENABLE也不可能出現(xiàn)你說的3的情況。
4、最大的以訛傳訛,AIO可以用于RAW DEVICE,而且效果更好。因?yàn)榇蠖鄶?shù)的UNIX的AIO實(shí)現(xiàn)是這樣的,如果對RAW DEVICE用aio_read aio_write是,是用kernel threading,效率最高;但是對于FS,只能用lwp 或者thread模擬,效率低很多。所以在使用INFORMIX DB2等等DBMS的時(shí)候,要充分發(fā)揮aio的效果,應(yīng)該用raw device做數(shù)據(jù)容器。
5、再次強(qiáng)調(diào),aio server是kernel threading,和用戶自己創(chuàng)建的thread或者process都不同。當(dāng)然AIO SERVER沒有必要配置的太多,要根據(jù) 應(yīng)用和使用的磁盤控制器數(shù)量等決定。

posted on 2006-07-07 12:04 楊粼波 閱讀(2882) 評論(2)  編輯 收藏 引用 所屬分類: 網(wǎng)絡(luò)編程

評論

# re: AIX上的aio(轉(zhuǎn)貼) 2007-03-12 14:51 lodzio

http://www.storie-lesbo.lavoro-di-piede.info @X@   回復(fù)  更多評論   

# AIX kernel uses fast path when data is in raw device[未登錄] 2007-12-14 00:07 charles

However, if you want to confirm that an application that uses raw logic volumes is taking advantage of AIO, you can disable the fast path option via SMIT. When this option is disabled, even raw I/O will be forced through the aios kprocs  回復(fù)  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美女网站久久| 久久av红桃一区二区小说| 欧美日韩国产成人在线| 免费中文字幕日韩欧美| 久久精品综合| 久久网站免费| 欧美黄色小视频| 欧美日韩精品免费观看| 欧美日韩在线播放一区| 国产精品女人久久久久久| 韩国免费一区| 日韩视频免费在线| 亚洲一区二区毛片| 久久久91精品| 亚洲国内高清视频| 亚洲精选一区二区| 欧美一区午夜精品| 欧美激情在线有限公司| 国产精品福利在线观看| 在线观看视频一区二区| 在线视频亚洲| 久久女同互慰一区二区三区| 亚洲国产日韩欧美| 性欧美videos另类喷潮| 欧美激情视频网站| 国产一区二区av| 一区二区三区不卡视频在线观看| 欧美在线亚洲| 亚洲国产日韩欧美| 欧美一区日本一区韩国一区| 欧美日韩国产123| 激情六月综合| 在线播放国产一区中文字幕剧情欧美 | 久久国产日韩| 欧美日韩国产区| 亚洲国产精品免费| 久久久久欧美精品| 99视频精品全国免费| 毛片一区二区| 国语自产在线不卡| 午夜久久资源| 99精品视频一区| 欧美金8天国| 永久久久久久| 久久久亚洲人| 欧美一区二区视频观看视频| 国产精品福利久久久| 日韩一级片网址| 欧美韩日一区| 免播放器亚洲一区| 亚洲国产精品成人综合色在线婷婷 | 欧美国产日本韩| 午夜宅男久久久| 国产精品夜夜夜一区二区三区尤| 一区二区日韩| 亚洲精品一二三| 欧美久久久久| 一本色道久久99精品综合| 亚洲电影免费观看高清完整版在线 | 国产精品一二三四区| 国产精品99久久久久久久久| 91久久精品日日躁夜夜躁国产| 欧美大片一区| 一本色道久久88综合亚洲精品ⅰ| 99re热这里只有精品视频| 欧美日韩一区二区三区四区在线观看| 99国内精品| 在线中文字幕日韩| 国产免费成人av| 久久久蜜桃一区二区人| 久久精品国产亚洲aⅴ| 一区在线播放视频| 亚洲国产网站| 国产精品久久午夜| 久久精品在线视频| 理论片一区二区在线| 亚洲伦伦在线| 亚洲视频在线一区| 一区二区在线观看视频| 亚洲欧洲美洲综合色网| 国产精品午夜久久| 麻豆成人综合网| 欧美日本簧片| 久久精品视频网| 久久久蜜桃精品| 久久久久久国产精品一区| 久久er精品视频| 亚洲国产精品黑人久久久| 亚洲大胆在线| 国产精品视频内| 蜜臀av性久久久久蜜臀aⅴ| 欧美国产综合| 久久国产一区| 欧美乱妇高清无乱码| 欧美一区三区三区高中清蜜桃| 久久久久国产精品一区| 中国成人黄色视屏| 久久精品一区二区| 亚洲午夜一区二区三区| 久久影音先锋| 久久精品道一区二区三区| 欧美国产精品久久| 久久全球大尺度高清视频| 欧美日韩成人网| 免费观看一区| 国产日韩欧美三区| 日韩午夜激情av| 伊人婷婷欧美激情| 亚洲午夜电影在线观看| 亚洲毛片一区| 久久综合一区| 久久尤物视频| 国产一区二区成人久久免费影院| 一区二区高清视频在线观看| 亚洲日韩欧美一区二区在线| 欧美在线视频一区二区三区| 亚洲女同精品视频| 欧美日韩精品二区| 亚洲国产欧美在线| 最新成人在线| 蜜臀久久99精品久久久久久9| 久久久九九九九| 国产日韩专区在线| 亚洲免费影院| 香蕉久久一区二区不卡无毒影院| 欧美日韩免费在线| 日韩视频永久免费观看| 亚洲免费成人| 欧美精彩视频一区二区三区| 亚洲第一成人在线| 99精品福利视频| 欧美片网站免费| 亚洲狼人综合| 亚洲在线一区二区| 国产精品丝袜xxxxxxx| 亚洲欧美日韩区| 久久精品夜色噜噜亚洲aⅴ| 国产欧美在线| 久久成人精品无人区| 另类人畜视频在线| 亚洲片在线观看| 欧美日韩精品一区| 亚洲图片欧洲图片日韩av| 欧美一区二区视频免费观看| 国产热re99久久6国产精品| 亚洲在线观看免费| 浪潮色综合久久天堂| 亚洲福利视频网| 欧美激情精品久久久久久黑人| 亚洲国产美国国产综合一区二区| 亚洲精品影院| 国产精品国产三级国产普通话99| 亚洲精品视频一区| 欧美激情精品久久久久久免费印度| 极品少妇一区二区三区精品视频| 久久久亚洲影院你懂的| 欧美大片免费观看| 亚洲黄色成人| 欧美性大战久久久久久久蜜臀| 亚洲欧美国产日韩天堂区| 久久久综合网| 日韩一二三区视频| 国产欧美一区二区色老头| 久久久久久电影| 亚洲精选国产| 久久久精品国产99久久精品芒果| 亚洲二区视频在线| 欧美日韩中文在线| 欧美与黑人午夜性猛交久久久| 欧美大成色www永久网站婷| 亚洲视频网站在线观看| 国产综合色精品一区二区三区| 米奇777在线欧美播放| 一本久久a久久免费精品不卡| 久久激情视频久久| 99国产精品99久久久久久粉嫩 | 国产在线精品成人一区二区三区| 老司机精品视频网站| 亚洲图片欧美日产| 亚洲国产美女久久久久| 久久久久久综合网天天| 宅男精品导航| 在线看国产日韩| 国产精品一区二区三区四区五区 | 99视频精品免费观看| 国产日韩一区二区三区| 欧美精品在线视频观看| 久久精品综合一区| 亚洲一区图片| 亚洲免费观看| 欧美成人午夜| 久久综合给合久久狠狠狠97色69| 亚洲摸下面视频| 一本色道久久综合亚洲精品按摩| 影音先锋成人资源站| 国产亚洲一区精品| 国产精品麻豆va在线播放| 欧美日韩国产片| 欧美片第1页综合| 欧美v日韩v国产v|