• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    A Perfect Knob to Scale Thread Pool on Runtime

    2022-08-24 12:56:32FaisalBahadurArifIqbalUmarInsafUllahFahadAlgarniMuhammadAsgharKhanandSamihMostafa
    Computers Materials&Continua 2022年7期

    Faisal Bahadur, Arif Iqbal Umar, Insaf Ullah, Fahad Algarni, Muhammad Asghar Khanand Samih M.Mostafa

    1Department of Information Technology, Hazara University, Mansehra, 21300, Pakistan

    2Hamdard Institute of Engineering and Technology, Islamabad Campus, Pakistan

    3College of Computing and Information Technology, The University of Bisha, Bisha, Saudi Arabia

    4Faculty of Computers and Information, South Valley University, Qena, 83523, Egypt

    Abstract: Scalability is one of the utmost nonfunctional requirement of server applications, because it maintains an effective performance parallel to the large fluctuating and sometimes unpredictable workload.In order to achieve scalability, thread pool system (TPS) has been used extensively as a middleware service in server applications.The size of thread pool is the most significant factor, that affects the overall performance of servers.Determining the optimal size of thread pool dynamically on runtime is a challenging problem.The most widely used and simple method to tackle this problem is to keep the size of thread pool equal to the request rate, i.e., the frequencyoriented thread pool (FOTP).The FOTPs are the most widely used TPSs in the industry, because of the implementation simplicity, the negligible overhead and the capability to use in any system.However, the frequency-based schemes only focused on one aspect of changes in the load, and that is the fluctuations in request rate.The request rate alone is an imperfect knob to scale thread pool.Thus, this paper presents a workload profiling based FOTP, that focuses on request size (service time of request) besides the request rate as a knob to scale thread pool on runtime, because we argue that the combination of both truly represents the load fluctuation in server-side applications.We evaluated the results of the proposed system against state of the art TPS of Oracle Corporation (by a client-server-based simulator) and concluded that our system outperformed in terms of both; the response times and throughput.

    Keywords: Scalability; performance; middleware; workload profiling; multithreading; thread pool

    1 Introduction

    Scalability is one of the utmost non-functional requirements of server-side applications [1],because it increases performance proportional to the resources added in the system on high loads[2].The scalability is entirely dependent upon the middleware architecture, which means that the middleware must be designed in the view of scaling [3].A high scalable system can be achieved only, if the designers and software engineers consider scalability at the initial stages of software development life cycle, when architectural choices are made.Thus, middleware architecture makes server-side applications scalable, highly available and highly performant [4,5].

    The most significant approach used by most of the middleware in order to improve performance and scalability is TPS [6].The TPS is a multithreading architecture, that is used as a middleware, that executes incoming tasks (requests) simultaneously.The TPS has been used frequently as a middleware concurrency control service in web servers, application servers, distributed object computing infrastructures, ultra-large-scale (ULS) systems, for better performance.

    The key concern in TPS is the dynamic optimization of thread pool size, that determines the overall performance of TPS and improves quality of service [7].The experimental studies have proved that the most significant factor that effects the overall performance of application servers is the size of thread pool [8].The TPS-based systems are overloaded either due to the smaller or larger thread pool sizes, instead of adopting an optimal one.Smaller than the optimal pool size wastes processing resources and requests waitmost of the time for the availability of thread, that suffers response times and throughput [9].On the other hand, large pool size than system’s capacity increases thread related overheads that suffer response times [9].These overheads ultimately make the system busymost of the time to manage these overheads instead of letting threads execute requests, thus degrade system performance.These overheads include context switching overhead, scheduling overhead and synchronization overhead.Furthermore, if there are more shared resources between threads, then more synchronization causes additional scheduling overhead that further reduces system performance.

    Thus, the key concern in TPS-based systems is the dynamic optimization of thread pool size that avoids too small or too large pool size in order to elude execution time overhead [7].However,determining the optimal size of thread pool dynamically on runtime is a challenging problem [9].Therefore, majority of the commercial server applications use a simple frequency oriented TPS [6],that uses fluctuations in the request rate to optimize pool size.Using the request rate as a knob to scale thread pool is widely used because of its implementation simplicity, the negligible overhead and the capability to use it in any system.These systems are either bounded, where thread pool size is specified empirically by minimum and maximum limits at server initialization time [10], or unbounded [6], that avoids specifying upper limit and always keeps thread pool size equal to the request rate.

    However, the request rate alone is an imperfect knob to scale thread pool, because request rate is not the only reason that changes the load on the server [11].There is another way in which the load on the server can be changed besides request rate, and that is the request size (service time of request) [11].This type of load fluctuation is too common in server-side applications.However, the service times of newly submitted requests are unknown at schedule time [12].

    Thus, in this paper, the proposed scheme uses a dynamic workload profiling procedure, that computes the service times of newly entered requests in the system and records these times in a hash table.In every second, the average of service times of requests (submitted to the system) is calculated.The average service time is multiplied by the current request rate to yield a number that represents an optimal thread pool size.

    The rest of the paper is organized as follows.Related work is given in Section 2.The design of the proposed system is presented in Section 3.Section 4 is a validation of the proposed system.And finally, the conclusion and future work are presented in Section 5.

    2 Related Work

    This section explores the tuning strategies for thread pool size optimization presented in the past.

    The system resource based TPS has been presented in [13], where CPU and memory utilization metrics are used to optimize thread pool size.However, the system resource metric is a low-level metric that cannot be used as an actual pointer to overload condition.Moreover, successively measuring different types of resource usages after short intervals consumes computational resources and decrease machine capacity [14].

    The response time is considered as a performance metric in [15,16] for TPS optimization.The optimization policies are based on response time observations.After specified time intervals, an algorithm compares successive response times on specific pool size and either increases pool size if response times are higher or decreases pool size if response times are better.However, the response time metric becomes vague and useless for server applications that have requests of different processing times, e.g., multi-tier web applications.Hence, policies [17] have been suggested to smooth response time metric to make it effective in multi-tier applications.

    The average idle time (AIT) of queued requests has been used in [18,19] to optimize the pool size, however, periodically calculating AIT involves stalling the request queue that increases synchronization overhead that effects system performance.

    The throughput metric is used in [20] to optimize the pool size.On throughput fall, the algorithm gradually increases pool size until throughput stability.However, assessing only throughput fall to tune the pool size may affect the response times of the clients.

    The prediction based TPSs have been presented in [21-23], that predict an expected thread pool size that may require in the future, so that, the pool size can be configured in priori.An obvious limitation of all the prediction-based schemes presented is that, the predictions might be inaccurate due the unpredictable workload on the servers.

    The fuzzy [24] and heuristic approaches [25] have been attempted in TPS optimization.However,systems having variation in the nature and size of requests can affect these algorithms.

    The frequency based schemes [26-32] are the most widely used TPSs in the industry [6], that optimizes thread pool size based on request rate on the server.The Oracle Corporation’s Java5.0 provides ThreadPoolExecutor [26], that optimizes pool size on the basis of client’s request rate (i.e., frequency).The pool size increases gradually on high request rate up to amaximumlimit, that defines a boundary that cannot be exceeded.The maximum limit must be defined initially and can’t be changed on run time.If the maximum limit is initialized with an unbounded option (Integer.MAX_VALUE), then ThreadPoolExecutor behaves as an unbounded TPS, where an unlimited upscaling of thread pool size is considered.TheApache Software Foundation provides a TPS calledWatermark Executor [27] to boost up the performance of web services.This TPS is an extension of ThreadPoolExecutor [26] in the formof a balancing act between request frequency and queue draining speed.If the request queue gets to a certain size (watermark), more threads will be added until the maximum number of threads.This is different from ThreadPoolExecutor [26] that starts adding threads as soon as all the other threads are used.A real time middleware is presented in [28], that optimized the size of thread pool by linear approach.The middleware is presented for Cyber Physical Systems (CPS).The thread pool size is optimized based on the incoming load condition (frequency).Similarly, another real time middleware is presented in [29] that utilized a dynamic thread pool that receives, processes and retransmits the requests arrived in a distributed IoT environment.This scheme optimized thread pool size by the rate of received packets (frequency) and the retransmission time of packets.A distributed FOTP is presented in [30] for clusters, that uses non-blocking queue that drives thread safety not from locks but from atomic operation.This design was targeted to only distributed shared memory systems.The TPSs at each node of the cluster are optimized on the basis of request rate on corresponding node.Another distributed FOTP is presented in [31], where FOTPs running at the backend servers are optimized on request rate, and memory utilization is assessed to detect an overload condition on backend servers.The queuing theory based TPS is presented in [32], however, an offline system profiling strategy is adopted and run the offline profiling strategy on n-tier system for 100 min in order to generate near optimal thread pool size of each tier.The offline system profiling procedure is tedious, cumbersome, and impractical.Moreover, this approach is ineffective due to the dynamics and unpredictability of the workload, especially in the cloud, hence it needs to regenerate thread pool size when workload characteristics change.

    None of the frequency based TPS considered to calculate the combination of request size (service time) and request rate on run time to represent a true load on the system, because the real load fluctuation is truly represented by these two factors which must be calculated on runtime.Hence, this paper presents a dynamic workload profiling based FOTP, that computes the service times of newly entered requests in the system (on runtime) and records these times in a hash table.In every second,the average of service times of requests (submitted to the system) is calculated and multiplied by the current request rate to determine an optimal thread pool size.

    3 System Architecture of Proposed FOTP

    This section discusses the system architecture of the dyna mic workload profiling based FOTP.The FOTP is composed of collection of components shown in Fig.1.

    Figure 1: System architecture of workload profiling based FOTP running in a multi-threaded server

    The Receiver is a thread, that receives client’s requests for processing.On every request arrival,it increments the Counter object that is used to keep track of the request rate per second on FOTP.After every second, the value of the Counter is repeatedly saved and reset to zero by the Frequency Detector (timer).In this way, both Counter and Frequency Detector keep track of the request rate per second on FOTP.The Receiver forwards request to the Tag_Binder for further processing, that uses the request’s identifier (ID) as an index into the hash table to fetch the service time of requests.If it is found, then it adds the service time to the variable named total_ST (i.e., total service time), binds a service time tag with the request and finally push the request in the request queue.If request’s ID does not exist in the hash table, then the request is simply pushed into the request queue.Eq.(1) is used to calculate the sum of service times of all requests entered in the system per second, which is represented by total_ST variable.

    The total_ST is accessed by the Frequency Detector to calculate the average of service time per second.This is a timer thread, that activates after every second, and keeps track of the frequency of change in the real load every second on the system.The real load comprises of the combination of request rate and the service times of all requests entered per second in the system.The request rate per second is tracked by the Counter and saved in the Frequency object.The service times of all requests entered per second in the system is tracked by the total_ST variable.Eq.(2) is used by the Frequency Detector to calculate the average of service times of all requests entered per second in the system.

    For all requests entered per second in the system from 1 to Counter, the avg_ST (i.e., average service time) is calculated by dividing the sum of their service time by Counter.However, the service time of requests are unknown when they first time enter in the system.Thus, the dynamic workload profiling procedure computes the service times of newly entered requests by time stamping and records the service times in a hash table.The requests are time stamped at two stages, right before the request execution (StartTime), and finally, after request completion (EndTime).The stamps are only marked on those requests that are entered first time in the system and their service time is not present in the hash table.This table maintains the service times of each request.The request_ID is used as an indexed into the hash table by a hash function, that keeps the service time of request if index exists.By using the request_ID as an index, the average search time complexity of any element is O (1).The untagged requests are marked with the StartTime stamp by thread just before their execution.After request completion, these untagged requests are again marked with the EndTime stamp and handover to the ST_Calculator (i.e., service time calculator).Eq.(3) is used by the ST_Calculator to calculates the service time of request.The ST_Calculator records the service time in the hash table.Finally, it enqueues the request in the Response Queue.

    When Frequency Detector runs, it saves the Counter in the Frequency object, computes the avg_ST, resets the total_ST and Counter to zero and finally, it runs the dynamic tuning strategy (DTS)thread, that is responsible to optimize the size of thread pool.The thread pool is a dynamic linked list,that holds threads to execute client’s request.The thread pool expands dynamically, when threads are added in it by the DTS, when needed.It also shrinks, when request rate falls down from high to low request rate, and some threads becomes idle in the pool till certain specified threshold time.Every thread of thread pool is equipped with a timer, that starts only when thread is idle in the pool.The timer destroys corresponding thread, if it is idle for threshold time (500 milliseconds), in order to reduce the pool size.

    TheDTS thread is run by the FrequencyDetector every second before finishing its own execution.It dynamically optimizes thread pool size by assessing the request rate and service times of queued requests.When it starts running for the first time, it keeps its pool size parallel to the request rate, however, in the subsequent runs, it also assesses the workload’s service times.

    The avg_ST (Eq.(2)) is passed to the DTS by the Frequency Detector and the current request rate is read by theDTS fromFrequency object.The DTSmaintains an appropriate number of threads in the thread pool by assessing avg_ST (Eq.(2)) and request rate.Eq.(4) is used to calculate an appropriate number of threads in thread pool by the DTS.

    where, the λ in Eq.(4) is the request rate per second.

    Suppose that, the request rate is 10 requests per second, where all requests have service times of 2s,then according to Eq.(4), thePoolSize=10*2=20.In case, if all requests have service time of 0.5 s, thenPoolSize=10*0.5=5.Since 5 threads can handle 10 requests (of 0.5 s) in one second, hence this will not affect the throughput.However, the response times of 5 out of 10 requests will be compromised,i.e., 5 requests will have to wait for 0.5 s for thread availability and consecutive request arrival will further increase the wait times of requests.Hence, for small service timed workload (having avg_ST less than or equal to 1 s), we only consider λ(i.e., request arrival rate) to set a pool size, so that 10 threads can be assigned to 10 requests to gain response time improvement.Hence, Eq.(4) is used to tune the pool size only whenService Time(k)/nis greater than 1, that represents high service time intensity workload of greater than 1 s.Otherwise, we only consider λ as the pool size.In short, this paper uses the following if-else construct to tune the pool size.

    The algorithm of DTS to tune the pool size is given in Fig.2.

    Figure 2: Algorithm of dynamic tuning strategy

    At the start of the algorithm, the pool size is set to the request rate, if workload (avg_ST) per second is smaller than or equal to 1 s.Otherwise, if the workload is greater than 1 s, then pool size is set to the product of the request rate and average service times of requests.

    4 Validating the Proposed FOTP

    In this section, we compared the performance of workload profiling based FOTP with Thread-PoolExecutor [26] on different workloads.The ThreadPoolExecutor uses request rate to optimize thread pool size.Both of the TPSs are initialized with 10 threads.This test has been performed on a single system, through jPoolRunner [33] simulation toolkit.We embedded both of the TPSs in the server-tier of simulation system through its extension framework.The client and the server tiers of the simulation system are running on the localhost i.e., single machine.

    The workload used for this test is depicted Tab.1.The workload is mostly I/O bound, because we are performing this simulation test on a single system.The dynamic workload is kept small to protect seizing processing resources.The 50% of workload is high I/O intensive (2 s) in order to show the effectiveness of proposed FOTP system over pool size that improves system performance.Fig.3 depicts the load generated for 1 min, that follows poisson distribution, with λ=100.In Fig.3 the x axis represents time in seconds and y axis represents total number of requests sent on specific time.

    Table 1: Workload detail

    Figure 3: The generated load on the server

    Fig.4 presents a comparative analysis of pool sizes maintained by both of the TPSs in the wholetest run.The ThreadPoolExecutor kept its pool size equals to the highest request rate generated duringthe test run.Initially, the pool size is 10, afterward, the pool size is parallel to the next highest requestrate.The proposed FOTP kept its pool size equal to the request rate at the start, as the service timesare unknown to the FOTP.The service times of four different types of requests are measured andrecorded by the dynamic workload profiler on the very first arrival in the first second, hence the poolsize raised (≈114) further in the next second due to assessing both request rate and service time ofthe Fig.4, that on 10thsecond, the FOTP increased the pool size more than ThreadPoolExecutor.The FOTP created threads more than the request rate due to the large service times of requests, hence all of the requests got a proper response.

    Figure 4: Comparative analysis of pool sizes

    Fig.5 is a comparative analysis of throughputs of both schemes, which shows that the FOTP produces higher throughput than ThreadPoolExecutor due to its appropriate pool size in the whole test run.It can be seen in the figure, that the ThreadPoolExecutor took a little bit long time to complete than FOTP.The FOTP produces all responses in less amount of time (60 s) than ThreadPoolExecutor, because of its appropriate pool size.In case of FOTP, all of the requests almost got a proper response by available threads in the pool, hence the average throughput is 98 responses per second in Fig.6, whereas, the ThreadPoolExecutor produces 80 responses per second.

    Figure 5: Comparative analysis of throughputs

    Figure 6: Comparative analysis of average responses produced per second by both schemes

    Fig.7 presents a comparative analysis of response times of both systems.The FOTP reduces response times as compared to ThreadPoolExecutor, because it provides an optimal number of threads in the pool that picks and executes requests in performance efficient manner.ThreadPoolExecutor created small number of threads in the pool, as a result, the requests have to wait more in the queue for thread availability, hence, response times increased ultimately.The 50th, 90thand 95thpercentiles of FOTP are around 2 s.This is due to the workload characteristic of service time, because 50% workload has service time of 2 s.In case of ThreadPoolExecutor, the percentile response times have increased due to the waiting of requests in the request queue due to inappropriate quantity of threads in the pool.

    Figure 7: Comparative analysis of response times percentiles produced by both schemes

    5 Conclusion and Future Work

    This paper presented a workload profiling based frequency-oriented thread pool system, that focused on the combination of request size (service time) and the request rate to represent the real load on the server.The real load is used to set an optimal thread pool size of frequency-oriented thread pool system on runtime.Thus, the paper presented a combination of both; the request size (service time)and the request rate, as a knob to scale thread pool on runtime.We evaluated the proposed scheme against a request rate based TPS on high service time workload, and we found that, the proposed scheme is creating an optimal pool size.Hence, as compared to the request rate based TPS, the average throughput of the proposed scheme is increased by 22.5% and the response time reduction is 35% for 50thpercentile, 59.8% for 90thpercentile and 73.5% for 95thpercentile.

    In the future, we will implement an overload management scheme in the proposed system.Moreover, we will provide a distributed form of the proposed scheme for distributed server applications.

    Funding Statement:The authors received no specific funding for this study.

    Conflicts of Interest:The authors declare that they have no conflicts of interest to report regarding the present study.

    琪琪午夜伦伦电影理论片6080| √禁漫天堂资源中文www| 久久国产精品人妻蜜桃| 精品午夜福利视频在线观看一区| 国产99久久九九免费精品| 精品福利观看| 欧美av亚洲av综合av国产av| 国产一区二区三区在线臀色熟女| 国产成人一区二区三区免费视频网站| 国产99久久九九免费精品| 少妇熟女aⅴ在线视频| 香蕉久久夜色| 亚洲国产欧美一区二区综合| 一边摸一边抽搐一进一小说| 男女之事视频高清在线观看| 夜夜爽天天搞| 欧美在线一区亚洲| 成人三级做爰电影| 一本大道久久a久久精品| 午夜福利在线在线| 叶爱在线成人免费视频播放| 91麻豆av在线| 成人国产综合亚洲| 成人国产一区最新在线观看| 天堂√8在线中文| 男人的好看免费观看在线视频 | 午夜影院日韩av| 中文字幕熟女人妻在线| 性欧美人与动物交配| 在线国产一区二区在线| 欧美又色又爽又黄视频| 国产精品自产拍在线观看55亚洲| 欧美丝袜亚洲另类 | 日本熟妇午夜| 99久久99久久久精品蜜桃| 久久精品91无色码中文字幕| 久久久久九九精品影院| 亚洲一卡2卡3卡4卡5卡精品中文| 一本一本综合久久| x7x7x7水蜜桃| 国产麻豆成人av免费视频| 一进一出抽搐动态| 非洲黑人性xxxx精品又粗又长| 国产视频内射| 99久久综合精品五月天人人| 欧美一级毛片孕妇| 国产精品永久免费网站| 中文字幕最新亚洲高清| 国产1区2区3区精品| 91九色精品人成在线观看| 在线观看免费视频日本深夜| 亚洲精品色激情综合| 男插女下体视频免费在线播放| 高清在线国产一区| 两个人的视频大全免费| 亚洲性夜色夜夜综合| 美女 人体艺术 gogo| 久久热在线av| 男女那种视频在线观看| 免费在线观看完整版高清| 亚洲精品久久成人aⅴ小说| 亚洲av日韩精品久久久久久密| 性色av乱码一区二区三区2| 午夜福利视频1000在线观看| 亚洲av电影不卡..在线观看| 精品国产乱子伦一区二区三区| 国内精品一区二区在线观看| 日本黄大片高清| 国产三级中文精品| 搡老岳熟女国产| 99热只有精品国产| 亚洲九九香蕉| 男插女下体视频免费在线播放| 午夜成年电影在线免费观看| 成年免费大片在线观看| 亚洲av电影不卡..在线观看| 亚洲专区字幕在线| 又紧又爽又黄一区二区| av天堂在线播放| 国产精品九九99| 亚洲aⅴ乱码一区二区在线播放 | 色av中文字幕| 精品第一国产精品| 天堂影院成人在线观看| 国产成人精品久久二区二区免费| 久久精品国产综合久久久| 国产精品98久久久久久宅男小说| 国产三级中文精品| 久久精品国产清高在天天线| 亚洲熟妇中文字幕五十中出| 欧美黑人巨大hd| 三级毛片av免费| 欧美国产日韩亚洲一区| 国产av麻豆久久久久久久| 麻豆一二三区av精品| 亚洲欧美日韩东京热| 国产男靠女视频免费网站| 日韩三级视频一区二区三区| 51午夜福利影视在线观看| 日本一区二区免费在线视频| 正在播放国产对白刺激| 精品国内亚洲2022精品成人| 在线十欧美十亚洲十日本专区| av免费在线观看网站| 99久久久亚洲精品蜜臀av| 国产又色又爽无遮挡免费看| 黄片小视频在线播放| 女生性感内裤真人,穿戴方法视频| 日本免费a在线| 久久久国产精品麻豆| 一个人免费在线观看的高清视频| 国产亚洲精品久久久久5区| 成人手机av| 久99久视频精品免费| 国产久久久一区二区三区| 成人精品一区二区免费| 国产午夜福利久久久久久| 婷婷六月久久综合丁香| 欧美日韩乱码在线| 精品一区二区三区四区五区乱码| www.精华液| 级片在线观看| 欧美乱码精品一区二区三区| 亚洲电影在线观看av| 国产一区二区在线观看日韩 | 麻豆国产av国片精品| 可以在线观看的亚洲视频| 少妇的丰满在线观看| 国产片内射在线| 黑人操中国人逼视频| 在线观看66精品国产| 12—13女人毛片做爰片一| 亚洲国产看品久久| 九九热线精品视视频播放| 十八禁人妻一区二区| 操出白浆在线播放| svipshipincom国产片| 国产精品一区二区免费欧美| 欧美乱码精品一区二区三区| 亚洲 欧美 日韩 在线 免费| 国产三级在线视频| 久久精品国产清高在天天线| 丝袜美腿诱惑在线| 欧美乱妇无乱码| 在线看三级毛片| xxx96com| 亚洲人成网站在线播放欧美日韩| 欧美黑人精品巨大| 国产欧美日韩精品亚洲av| 国产亚洲精品久久久久5区| 热99re8久久精品国产| 级片在线观看| 亚洲欧美日韩东京热| 少妇粗大呻吟视频| 久久亚洲精品不卡| 长腿黑丝高跟| 精品国产乱码久久久久久男人| 一边摸一边抽搐一进一小说| 国产精品美女特级片免费视频播放器 | 久久精品国产清高在天天线| 国产伦人伦偷精品视频| 国产熟女午夜一区二区三区| 欧美黄色淫秽网站| 久久人妻av系列| 又黄又爽又免费观看的视频| 我的老师免费观看完整版| 亚洲国产看品久久| 母亲3免费完整高清在线观看| 精品日产1卡2卡| 91九色精品人成在线观看| 12—13女人毛片做爰片一| 岛国视频午夜一区免费看| 国产精品 国内视频| 成熟少妇高潮喷水视频| 亚洲欧美精品综合一区二区三区| 无遮挡黄片免费观看| 舔av片在线| 可以免费在线观看a视频的电影网站| 午夜日韩欧美国产| 一区二区三区高清视频在线| 亚洲国产欧美人成| 国产欧美日韩一区二区精品| 男女那种视频在线观看| 一级黄色大片毛片| 啦啦啦免费观看视频1| 欧美一区二区国产精品久久精品 | 国产成人av激情在线播放| 全区人妻精品视频| 老汉色av国产亚洲站长工具| 一本久久中文字幕| 国产精品永久免费网站| 一二三四在线观看免费中文在| 久久久久亚洲av毛片大全| 国产又色又爽无遮挡免费看| av视频在线观看入口| 夜夜夜夜夜久久久久| 日日摸夜夜添夜夜添小说| 亚洲 欧美 日韩 在线 免费| 国产精品,欧美在线| а√天堂www在线а√下载| 精品欧美国产一区二区三| 国产又黄又爽又无遮挡在线| 久久精品91蜜桃| 他把我摸到了高潮在线观看| 中国美女看黄片| 亚洲男人的天堂狠狠| 女人爽到高潮嗷嗷叫在线视频| 人人妻,人人澡人人爽秒播| 国产三级黄色录像| 1024手机看黄色片| 欧美一级a爱片免费观看看 | 人成视频在线观看免费观看| 久久久久精品国产欧美久久久| 白带黄色成豆腐渣| 国产不卡一卡二| or卡值多少钱| 又大又爽又粗| 成人18禁高潮啪啪吃奶动态图| 国产一级毛片七仙女欲春2| 19禁男女啪啪无遮挡网站| 毛片女人毛片| 免费在线观看日本一区| 一区二区三区高清视频在线| 久久国产乱子伦精品免费另类| 久久99热这里只有精品18| 听说在线观看完整版免费高清| 一级作爱视频免费观看| 精品国内亚洲2022精品成人| 12—13女人毛片做爰片一| 日本免费a在线| 欧美丝袜亚洲另类 | 亚洲欧美激情综合另类| 亚洲最大成人中文| 神马国产精品三级电影在线观看 | 国产av麻豆久久久久久久| 亚洲精品中文字幕在线视频| 国产又色又爽无遮挡免费看| 岛国在线免费视频观看| 亚洲欧洲精品一区二区精品久久久| av福利片在线观看| 成人三级黄色视频| 免费高清视频大片| 国产精华一区二区三区| 亚洲av电影不卡..在线观看| 国产精品一区二区精品视频观看| 亚洲精品美女久久久久99蜜臀| 亚洲成av人片免费观看| 国产片内射在线| 亚洲成人免费电影在线观看| 黄色女人牲交| 男女之事视频高清在线观看| 亚洲精品国产一区二区精华液| av免费在线观看网站| 免费av毛片视频| 久久九九热精品免费| 99精品在免费线老司机午夜| 国产精品久久久久久亚洲av鲁大| 嫩草影院精品99| 成人国语在线视频| netflix在线观看网站| 免费看a级黄色片| a级毛片a级免费在线| 又爽又黄无遮挡网站| 国产黄片美女视频| 18禁国产床啪视频网站| 俺也久久电影网| 亚洲天堂国产精品一区在线| 悠悠久久av| 久久精品综合一区二区三区| 免费在线观看亚洲国产| 母亲3免费完整高清在线观看| 久99久视频精品免费| 成人精品一区二区免费| 女人高潮潮喷娇喘18禁视频| 久久人妻福利社区极品人妻图片| 欧美丝袜亚洲另类 | 欧美乱妇无乱码| 免费观看精品视频网站| 国产男靠女视频免费网站| 最近最新中文字幕大全免费视频| 国产人伦9x9x在线观看| 国产亚洲精品久久久久久毛片| 婷婷六月久久综合丁香| 一边摸一边抽搐一进一小说| netflix在线观看网站| 亚洲精品美女久久久久99蜜臀| 欧美国产日韩亚洲一区| 日韩 欧美 亚洲 中文字幕| xxxwww97欧美| 97碰自拍视频| 三级毛片av免费| 身体一侧抽搐| 日韩大码丰满熟妇| 国产乱人伦免费视频| 我要搜黄色片| 国产亚洲精品av在线| 日本精品一区二区三区蜜桃| 久久午夜综合久久蜜桃| 国产精品一及| 国产片内射在线| 国产一区在线观看成人免费| 中出人妻视频一区二区| 色在线成人网| 女人被狂操c到高潮| 国产三级中文精品| 美女 人体艺术 gogo| 两个人的视频大全免费| 麻豆成人午夜福利视频| 亚洲一区二区三区色噜噜| 18美女黄网站色大片免费观看| 757午夜福利合集在线观看| 国产精品精品国产色婷婷| 可以在线观看毛片的网站| 亚洲av美国av| 国产在线精品亚洲第一网站| 日韩欧美一区二区三区在线观看| 日韩欧美在线二视频| 亚洲国产精品sss在线观看| 免费在线观看成人毛片| 此物有八面人人有两片| 一进一出抽搐动态| 又粗又爽又猛毛片免费看| 俺也久久电影网| 午夜激情av网站| 18禁美女被吸乳视频| 好看av亚洲va欧美ⅴa在| 午夜福利免费观看在线| 亚洲午夜理论影院| 99国产综合亚洲精品| 亚洲精品av麻豆狂野| 99热只有精品国产| 50天的宝宝边吃奶边哭怎么回事| 久久中文看片网| 99热这里只有精品一区 | 国产av一区二区精品久久| 久久草成人影院| 村上凉子中文字幕在线| 97超级碰碰碰精品色视频在线观看| 精品不卡国产一区二区三区| 午夜免费激情av| 三级男女做爰猛烈吃奶摸视频| 国产精品久久久久久人妻精品电影| 在线十欧美十亚洲十日本专区| 91av网站免费观看| 国产伦一二天堂av在线观看| 极品教师在线免费播放| 特级一级黄色大片| 制服丝袜大香蕉在线| 好看av亚洲va欧美ⅴa在| 精品久久久久久久毛片微露脸| 看片在线看免费视频| 国产一区二区激情短视频| 一级毛片精品| or卡值多少钱| 一本大道久久a久久精品| 欧美日韩亚洲综合一区二区三区_| 亚洲国产欧美网| 久久精品综合一区二区三区| 亚洲成av人片在线播放无| 国产亚洲欧美在线一区二区| 国产99久久九九免费精品| АⅤ资源中文在线天堂| 欧美最黄视频在线播放免费| 亚洲无线在线观看| 亚洲国产欧美网| 中文字幕熟女人妻在线| 亚洲专区字幕在线| 大型av网站在线播放| 亚洲一区中文字幕在线| 老鸭窝网址在线观看| 老司机在亚洲福利影院| 免费搜索国产男女视频| 亚洲精品一卡2卡三卡4卡5卡| a级毛片在线看网站| 色老头精品视频在线观看| 搡老妇女老女人老熟妇| 精品福利观看| 亚洲精品久久国产高清桃花| 亚洲 欧美 日韩 在线 免费| 久9热在线精品视频| 日本黄大片高清| 欧美色视频一区免费| 999久久久精品免费观看国产| a在线观看视频网站| 亚洲电影在线观看av| 成年人黄色毛片网站| 麻豆久久精品国产亚洲av| tocl精华| 亚洲 国产 在线| 黄色片一级片一级黄色片| 久久久久久人人人人人| 欧美色欧美亚洲另类二区| 男女午夜视频在线观看| 成熟少妇高潮喷水视频| 一区福利在线观看| 最近最新中文字幕大全电影3| 国产av一区二区精品久久| 日本三级黄在线观看| 国产精品香港三级国产av潘金莲| 精品久久久久久成人av| avwww免费| 午夜成年电影在线免费观看| 99热只有精品国产| 天堂av国产一区二区熟女人妻 | 两个人看的免费小视频| 久久香蕉国产精品| 国产伦在线观看视频一区| 露出奶头的视频| 国产精品亚洲美女久久久| 亚洲欧美一区二区三区黑人| 三级男女做爰猛烈吃奶摸视频| 桃红色精品国产亚洲av| 老熟妇仑乱视频hdxx| 日本一区二区免费在线视频| 亚洲欧美日韩无卡精品| 欧美国产日韩亚洲一区| 亚洲18禁久久av| 看片在线看免费视频| 天天添夜夜摸| 老熟妇乱子伦视频在线观看| 十八禁人妻一区二区| 人妻夜夜爽99麻豆av| 亚洲人与动物交配视频| 亚洲国产精品sss在线观看| 精品久久久久久成人av| 亚洲男人天堂网一区| 亚洲欧美日韩高清在线视频| 亚洲av电影在线进入| 搞女人的毛片| 亚洲精品久久国产高清桃花| 99久久久亚洲精品蜜臀av| 久久久精品国产亚洲av高清涩受| av国产免费在线观看| 国内久久婷婷六月综合欲色啪| 亚洲男人天堂网一区| 丁香六月欧美| 一个人免费在线观看电影 | 亚洲片人在线观看| 淫妇啪啪啪对白视频| 国产黄a三级三级三级人| netflix在线观看网站| 亚洲七黄色美女视频| av福利片在线观看| 麻豆成人午夜福利视频| 亚洲乱码一区二区免费版| 欧美一级毛片孕妇| 丰满人妻一区二区三区视频av | 午夜激情福利司机影院| 在线视频色国产色| 亚洲天堂国产精品一区在线| 国产精品日韩av在线免费观看| 搡老熟女国产l中国老女人| 日本a在线网址| 三级男女做爰猛烈吃奶摸视频| 最近最新中文字幕大全免费视频| 欧美绝顶高潮抽搐喷水| 色综合婷婷激情| 免费观看人在逋| 国产乱人伦免费视频| 两性夫妻黄色片| 999久久久国产精品视频| 成人国语在线视频| 亚洲激情在线av| 免费观看精品视频网站| 在线观看美女被高潮喷水网站 | 我要搜黄色片| 又紧又爽又黄一区二区| 国产麻豆成人av免费视频| 美女大奶头视频| 亚洲第一电影网av| 亚洲精品美女久久av网站| 9191精品国产免费久久| 最近最新中文字幕大全免费视频| 黑人巨大精品欧美一区二区mp4| 麻豆国产av国片精品| 国产亚洲精品第一综合不卡| 国内久久婷婷六月综合欲色啪| АⅤ资源中文在线天堂| 又黄又粗又硬又大视频| a在线观看视频网站| 老熟妇仑乱视频hdxx| www国产在线视频色| 欧美在线黄色| 精品第一国产精品| 亚洲性夜色夜夜综合| 国产精品99久久99久久久不卡| 麻豆国产av国片精品| 村上凉子中文字幕在线| 久久午夜综合久久蜜桃| 天天添夜夜摸| 日本成人三级电影网站| 午夜激情福利司机影院| 草草在线视频免费看| 亚洲 欧美一区二区三区| 叶爱在线成人免费视频播放| 一边摸一边做爽爽视频免费| 很黄的视频免费| 亚洲片人在线观看| 国产精品一区二区免费欧美| 淫秽高清视频在线观看| 久久久久国产精品人妻aⅴ院| 一本久久中文字幕| 亚洲av成人不卡在线观看播放网| 精品久久久久久成人av| 国产午夜精品久久久久久| 又黄又粗又硬又大视频| 日本一二三区视频观看| 亚洲美女黄片视频| 正在播放国产对白刺激| 最近视频中文字幕2019在线8| 亚洲自偷自拍图片 自拍| 亚洲精华国产精华精| 亚洲全国av大片| 亚洲国产中文字幕在线视频| 长腿黑丝高跟| 亚洲国产精品合色在线| 久久香蕉激情| av在线播放免费不卡| 国产99久久九九免费精品| 亚洲欧美一区二区三区黑人| 我的老师免费观看完整版| 成年女人毛片免费观看观看9| 日韩欧美三级三区| 在线观看舔阴道视频| 中国美女看黄片| 波多野结衣高清无吗| 成人18禁在线播放| 精品久久久久久久毛片微露脸| 一二三四在线观看免费中文在| 午夜老司机福利片| 久久婷婷人人爽人人干人人爱| 亚洲av中文字字幕乱码综合| 亚洲aⅴ乱码一区二区在线播放 | 成人三级做爰电影| 日韩三级视频一区二区三区| 亚洲av五月六月丁香网| 热99re8久久精品国产| 久久精品国产亚洲av香蕉五月| 国产精品电影一区二区三区| 免费人成视频x8x8入口观看| 天天躁夜夜躁狠狠躁躁| 成人18禁在线播放| 中文字幕熟女人妻在线| 午夜两性在线视频| 欧美丝袜亚洲另类 | 亚洲成av人片免费观看| 一级a爱片免费观看的视频| 日本一本二区三区精品| 国产伦人伦偷精品视频| 色哟哟哟哟哟哟| 可以免费在线观看a视频的电影网站| 天堂动漫精品| 日韩精品中文字幕看吧| 别揉我奶头~嗯~啊~动态视频| 日韩精品免费视频一区二区三区| 亚洲av中文字字幕乱码综合| 一边摸一边抽搐一进一小说| 最好的美女福利视频网| 国产成人av激情在线播放| 亚洲七黄色美女视频| 欧美一区二区精品小视频在线| www.精华液| 亚洲人成77777在线视频| 亚洲中文字幕日韩| 国产69精品久久久久777片 | 一级作爱视频免费观看| 国产主播在线观看一区二区| 亚洲午夜理论影院| 给我免费播放毛片高清在线观看| 在线视频色国产色| 日日爽夜夜爽网站| 国产精品 国内视频| av中文乱码字幕在线| 欧美久久黑人一区二区| 亚洲av第一区精品v没综合| 一进一出抽搐gif免费好疼| 亚洲国产精品久久男人天堂| 淫秽高清视频在线观看| 久久精品91蜜桃| 人妻久久中文字幕网| 九九热线精品视视频播放| 中文亚洲av片在线观看爽| 最新在线观看一区二区三区| 中文字幕人妻丝袜一区二区| 日韩精品中文字幕看吧| 久久久精品国产亚洲av高清涩受| 黄片小视频在线播放| 757午夜福利合集在线观看| 亚洲人与动物交配视频| 18禁国产床啪视频网站| 天天一区二区日本电影三级| 亚洲人与动物交配视频| 国产精品,欧美在线| 搞女人的毛片| 在线观看日韩欧美| 丰满的人妻完整版| 国产免费男女视频| 可以在线观看的亚洲视频| 亚洲激情在线av| 日韩国内少妇激情av| 国产麻豆成人av免费视频| 美女黄网站色视频| 日韩精品中文字幕看吧| 免费在线观看成人毛片| 亚洲熟妇中文字幕五十中出| av免费在线观看网站| 女人被狂操c到高潮| 国产一区二区激情短视频| 国产亚洲av高清不卡| 婷婷丁香在线五月| 19禁男女啪啪无遮挡网站| 国产亚洲精品久久久久久毛片| 精品欧美一区二区三区在线| 亚洲无线在线观看| 妹子高潮喷水视频|