• <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.

    91九色精品人成在线观看| 人人澡人人妻人| 欧美中文综合在线视频| 我的亚洲天堂| 成熟少妇高潮喷水视频| 夜夜夜夜夜久久久久| 这个男人来自地球电影免费观看| 久久精品国产亚洲av高清一级| 国产真人三级小视频在线观看| 欧美日韩精品网址| 午夜日韩欧美国产| 亚洲欧美日韩高清在线视频| www.精华液| 久久午夜亚洲精品久久| 搡老妇女老女人老熟妇| 亚洲av日韩精品久久久久久密| 成人三级黄色视频| 日韩免费av在线播放| 亚洲国产欧美网| 亚洲国产中文字幕在线视频| 欧美丝袜亚洲另类 | 成年版毛片免费区| 999久久久精品免费观看国产| av在线播放免费不卡| 久久天堂一区二区三区四区| 黑丝袜美女国产一区| 免费观看人在逋| 性色av乱码一区二区三区2| 国产国语露脸激情在线看| 日本撒尿小便嘘嘘汇集6| www.精华液| 精品国内亚洲2022精品成人| 一本大道久久a久久精品| 999久久久精品免费观看国产| 国产精品久久久久久亚洲av鲁大| 色综合亚洲欧美另类图片| 久久精品影院6| av在线天堂中文字幕| 亚洲精品国产精品久久久不卡| 91成人精品电影| 国产视频一区二区在线看| 两个人看的免费小视频| 非洲黑人性xxxx精品又粗又长| 国产伦人伦偷精品视频| 午夜福利,免费看| 日韩中文字幕欧美一区二区| 久久精品国产综合久久久| av片东京热男人的天堂| 禁无遮挡网站| 香蕉丝袜av| 88av欧美| 精品国产一区二区三区四区第35| 女人被躁到高潮嗷嗷叫费观| 久久国产亚洲av麻豆专区| 美女 人体艺术 gogo| 男女之事视频高清在线观看| 国产一卡二卡三卡精品| 此物有八面人人有两片| 国产成人免费无遮挡视频| 久久香蕉激情| 这个男人来自地球电影免费观看| 女人精品久久久久毛片| 国产精品国产高清国产av| 动漫黄色视频在线观看| 婷婷六月久久综合丁香| 精品久久久久久久毛片微露脸| 欧美乱妇无乱码| 久久久久久亚洲精品国产蜜桃av| 操出白浆在线播放| videosex国产| 国产精品久久久久久精品电影 | 电影成人av| 国产一区二区三区综合在线观看| av在线播放免费不卡| av中文乱码字幕在线| 国产精品综合久久久久久久免费 | 一区二区三区高清视频在线| 国产精品98久久久久久宅男小说| 欧美 亚洲 国产 日韩一| 欧美日本视频| 自拍欧美九色日韩亚洲蝌蚪91| 高清在线国产一区| 法律面前人人平等表现在哪些方面| 最近最新中文字幕大全电影3 | 免费在线观看影片大全网站| 成人精品一区二区免费| 日本三级黄在线观看| 老司机午夜十八禁免费视频| 亚洲国产日韩欧美精品在线观看 | 亚洲情色 制服丝袜| 校园春色视频在线观看| 97超级碰碰碰精品色视频在线观看| 国产成人一区二区三区免费视频网站| 级片在线观看| 99国产精品一区二区三区| 欧美绝顶高潮抽搐喷水| 黄网站色视频无遮挡免费观看| 999精品在线视频| 侵犯人妻中文字幕一二三四区| 黄色 视频免费看| 又紧又爽又黄一区二区| 成年女人毛片免费观看观看9| 日本vs欧美在线观看视频| 中文字幕人妻熟女乱码| 高清毛片免费观看视频网站| 亚洲精品久久国产高清桃花| 大码成人一级视频| 91九色精品人成在线观看| 欧美精品啪啪一区二区三区| 1024香蕉在线观看| 亚洲熟妇中文字幕五十中出| 1024视频免费在线观看| 成人三级做爰电影| 亚洲三区欧美一区| av视频免费观看在线观看| 中亚洲国语对白在线视频| 极品人妻少妇av视频| 久久人妻av系列| 亚洲一区中文字幕在线| 欧美av亚洲av综合av国产av| 极品教师在线免费播放| 真人一进一出gif抽搐免费| 九色国产91popny在线| 免费无遮挡裸体视频| 国产男靠女视频免费网站| 美女高潮喷水抽搐中文字幕| 青草久久国产| 国产精品一区二区免费欧美| 好看av亚洲va欧美ⅴa在| 每晚都被弄得嗷嗷叫到高潮| 国产成年人精品一区二区| 男女下面插进去视频免费观看| 精品无人区乱码1区二区| 成人18禁高潮啪啪吃奶动态图| 欧美乱码精品一区二区三区| 亚洲中文字幕一区二区三区有码在线看 | 欧洲精品卡2卡3卡4卡5卡区| 亚洲国产精品合色在线| 美女大奶头视频| 国产一区二区激情短视频| 欧美色欧美亚洲另类二区 | 午夜视频精品福利| 大陆偷拍与自拍| 亚洲人成电影免费在线| 亚洲 欧美一区二区三区| 国产精品免费视频内射| 日韩欧美一区视频在线观看| 变态另类丝袜制服| 久久中文字幕人妻熟女| 国产精品秋霞免费鲁丝片| 怎么达到女性高潮| 少妇粗大呻吟视频| 女性生殖器流出的白浆| 一进一出抽搐动态| 真人做人爱边吃奶动态| 神马国产精品三级电影在线观看 | 色哟哟哟哟哟哟| 男人舔女人下体高潮全视频| 国产亚洲精品久久久久5区| 可以在线观看的亚洲视频| 91老司机精品| 亚洲精品在线美女| 99热只有精品国产| 久久九九热精品免费| 亚洲天堂国产精品一区在线| 亚洲最大成人中文| 色av中文字幕| 色综合婷婷激情| 精品国产超薄肉色丝袜足j| 日韩欧美一区视频在线观看| 国产精品久久视频播放| 亚洲欧洲精品一区二区精品久久久| 两性午夜刺激爽爽歪歪视频在线观看 | 在线观看舔阴道视频| 亚洲va日本ⅴa欧美va伊人久久| 欧美 亚洲 国产 日韩一| 亚洲国产欧美一区二区综合| 天堂动漫精品| 国产精品,欧美在线| 一夜夜www| 久久久精品国产亚洲av高清涩受| 国产精品电影一区二区三区| 999精品在线视频| 亚洲男人天堂网一区| 男女下面插进去视频免费观看| 国产精品精品国产色婷婷| 亚洲人成77777在线视频| 久久久久久久午夜电影| 最近最新中文字幕大全免费视频| 性欧美人与动物交配| 韩国av一区二区三区四区| 欧美不卡视频在线免费观看 | 在线天堂中文资源库| 亚洲av熟女| 美女 人体艺术 gogo| 免费一级毛片在线播放高清视频 | 一a级毛片在线观看| 日本a在线网址| 热99re8久久精品国产| 我的亚洲天堂| 午夜精品国产一区二区电影| 色综合站精品国产| 夜夜爽天天搞| 精品午夜福利视频在线观看一区| 亚洲午夜精品一区,二区,三区| 日韩 欧美 亚洲 中文字幕| 久久中文字幕人妻熟女| 亚洲人成伊人成综合网2020| 麻豆一二三区av精品| 精品一区二区三区视频在线观看免费| 美女高潮到喷水免费观看| 久9热在线精品视频| 国产成人av激情在线播放| 亚洲五月色婷婷综合| 久热这里只有精品99| 最近最新中文字幕大全免费视频| 午夜成年电影在线免费观看| 亚洲色图av天堂| 在线观看免费视频网站a站| 亚洲九九香蕉| 非洲黑人性xxxx精品又粗又长| 国产成人免费无遮挡视频| 亚洲中文字幕日韩| 涩涩av久久男人的天堂| 中文字幕另类日韩欧美亚洲嫩草| 夜夜夜夜夜久久久久| 咕卡用的链子| 欧美av亚洲av综合av国产av| 免费人成视频x8x8入口观看| 女警被强在线播放| 人人妻人人澡人人看| 亚洲天堂国产精品一区在线| 日本黄色视频三级网站网址| 免费av毛片视频| 久久人妻熟女aⅴ| 亚洲一区高清亚洲精品| 亚洲av成人一区二区三| 精品电影一区二区在线| 亚洲精品美女久久久久99蜜臀| 视频在线观看一区二区三区| 欧美久久黑人一区二区| 夜夜看夜夜爽夜夜摸| 国产免费av片在线观看野外av| 久久人妻熟女aⅴ| 女人精品久久久久毛片| 久久精品国产综合久久久| 亚洲专区中文字幕在线| 久久香蕉国产精品| 精品熟女少妇八av免费久了| 9191精品国产免费久久| 国产亚洲精品第一综合不卡| 91av网站免费观看| 久久草成人影院| 热re99久久国产66热| 亚洲av成人不卡在线观看播放网| 免费看美女性在线毛片视频| 中出人妻视频一区二区| 欧美国产精品va在线观看不卡| 亚洲少妇的诱惑av| 久久人妻熟女aⅴ| 欧美成人免费av一区二区三区| 美国免费a级毛片| 一进一出抽搐gif免费好疼| 国产精品一区二区三区四区久久 | 亚洲国产高清在线一区二区三 | 极品人妻少妇av视频| 人人澡人人妻人| 久久久久久免费高清国产稀缺| 宅男免费午夜| 午夜福利在线观看吧| 色综合欧美亚洲国产小说| 在线观看舔阴道视频| www.自偷自拍.com| 久久久久久大精品| 黄色片一级片一级黄色片| 丁香六月欧美| av中文乱码字幕在线| 国产精品av久久久久免费| 在线观看免费视频日本深夜| 国产精品九九99| 黄色片一级片一级黄色片| 看片在线看免费视频| 欧美日韩瑟瑟在线播放| 变态另类成人亚洲欧美熟女 | 一级,二级,三级黄色视频| 国产av又大| 男女下面插进去视频免费观看| 高清黄色对白视频在线免费看| 午夜免费激情av| 久久人妻av系列| 老司机在亚洲福利影院| 久久天堂一区二区三区四区| 亚洲人成电影观看| 国产人伦9x9x在线观看| 国产一区二区三区视频了| 国产成年人精品一区二区| 国产区一区二久久| 精品久久久精品久久久| 在线观看www视频免费| 亚洲欧美日韩另类电影网站| 欧美黄色片欧美黄色片| 午夜精品在线福利| 久久国产亚洲av麻豆专区| 久久人人精品亚洲av| 国产伦人伦偷精品视频| av天堂久久9| 久久香蕉精品热| 亚洲成av片中文字幕在线观看| 99香蕉大伊视频| 国产精品野战在线观看| 国产精品久久久av美女十八| 这个男人来自地球电影免费观看| 看免费av毛片| 色在线成人网| 青草久久国产| 亚洲一区二区三区不卡视频| 免费少妇av软件| 国产精品爽爽va在线观看网站 | 精品免费久久久久久久清纯| 色尼玛亚洲综合影院| 夜夜看夜夜爽夜夜摸| 国产精品九九99| 国产精品亚洲av一区麻豆| 在线观看66精品国产| 一二三四社区在线视频社区8| 久久香蕉激情| 激情在线观看视频在线高清| 国产真人三级小视频在线观看| 精品国产乱码久久久久久男人| 国产精品永久免费网站| 精品一区二区三区视频在线观看免费| or卡值多少钱| 欧美日韩亚洲国产一区二区在线观看| 国产亚洲精品一区二区www| 男人舔女人下体高潮全视频| 国产色视频综合| 黑人操中国人逼视频| 一区二区日韩欧美中文字幕| 可以在线观看的亚洲视频| 搡老熟女国产l中国老女人| av在线播放免费不卡| 亚洲精品久久国产高清桃花| 精品高清国产在线一区| 国产一区二区三区视频了| 国产一区二区三区视频了| 午夜福利18| 亚洲aⅴ乱码一区二区在线播放 | 成人免费观看视频高清| 日本三级黄在线观看| 12—13女人毛片做爰片一| 露出奶头的视频| 91麻豆av在线| 国语自产精品视频在线第100页| 久久精品aⅴ一区二区三区四区| 亚洲五月婷婷丁香| 99久久99久久久精品蜜桃| 精品电影一区二区在线| 99在线人妻在线中文字幕| av网站免费在线观看视频| 可以免费在线观看a视频的电影网站| 中文字幕高清在线视频| 纯流量卡能插随身wifi吗| 免费在线观看完整版高清| 男女下面插进去视频免费观看| 亚洲一区高清亚洲精品| 在线观看舔阴道视频| 亚洲国产精品合色在线| av在线播放免费不卡| av视频在线观看入口| 亚洲人成电影观看| 久久人妻av系列| 亚洲成人免费电影在线观看| 1024香蕉在线观看| 久久久久九九精品影院| 欧美绝顶高潮抽搐喷水| 亚洲精品美女久久av网站| 欧美另类亚洲清纯唯美| 日韩免费av在线播放| 免费人成视频x8x8入口观看| 欧美最黄视频在线播放免费| 亚洲欧美日韩无卡精品| 51午夜福利影视在线观看| www国产在线视频色| 侵犯人妻中文字幕一二三四区| 91成年电影在线观看| 亚洲avbb在线观看| 天天躁夜夜躁狠狠躁躁| 一级,二级,三级黄色视频| 啦啦啦韩国在线观看视频| 欧美一区二区精品小视频在线| 黄片大片在线免费观看| 久久人人97超碰香蕉20202| 日韩视频一区二区在线观看| av欧美777| av视频在线观看入口| tocl精华| 欧洲精品卡2卡3卡4卡5卡区| 国产亚洲精品av在线| 亚洲专区中文字幕在线| 女人被躁到高潮嗷嗷叫费观| 日韩欧美三级三区| 亚洲无线在线观看| 久久久久九九精品影院| 成熟少妇高潮喷水视频| 日韩国内少妇激情av| 久久国产乱子伦精品免费另类| 90打野战视频偷拍视频| 中国美女看黄片| 两个人看的免费小视频| 亚洲欧美日韩无卡精品| 嫁个100分男人电影在线观看| 在线观看舔阴道视频| 亚洲av成人av| 亚洲欧洲精品一区二区精品久久久| 日本免费一区二区三区高清不卡 | 热99re8久久精品国产| 国产熟女xx| 国产精品免费一区二区三区在线| 99久久综合精品五月天人人| netflix在线观看网站| 色综合亚洲欧美另类图片| 少妇的丰满在线观看| 亚洲精品国产区一区二| 麻豆av在线久日| 午夜福利影视在线免费观看| 变态另类丝袜制服| 校园春色视频在线观看| 此物有八面人人有两片| av片东京热男人的天堂| 99久久久亚洲精品蜜臀av| 色播亚洲综合网| 韩国av一区二区三区四区| 亚洲精品美女久久久久99蜜臀| 国产激情久久老熟女| 一进一出抽搐gif免费好疼| 亚洲国产精品成人综合色| 精品久久久精品久久久| 国产一区二区激情短视频| 亚洲天堂国产精品一区在线| 男女下面进入的视频免费午夜 | 一区二区日韩欧美中文字幕| 精品国产一区二区久久| 麻豆成人av在线观看| 精品免费久久久久久久清纯| 亚洲人成77777在线视频| www.精华液| 亚洲美女黄片视频| 99在线视频只有这里精品首页| 国产精品乱码一区二三区的特点 | 欧美人与性动交α欧美精品济南到| 欧美国产精品va在线观看不卡| 国产免费av片在线观看野外av| 亚洲人成电影观看| 国语自产精品视频在线第100页| 欧美在线一区亚洲| 欧美绝顶高潮抽搐喷水| 90打野战视频偷拍视频| 免费在线观看日本一区| 国产三级黄色录像| 亚洲情色 制服丝袜| avwww免费| 国产成人啪精品午夜网站| 国产男靠女视频免费网站| 久久午夜亚洲精品久久| 国产亚洲av高清不卡| 日本a在线网址| 亚洲午夜理论影院| 女性生殖器流出的白浆| 高清在线国产一区| 亚洲国产精品sss在线观看| 亚洲五月婷婷丁香| 一级a爱视频在线免费观看| 视频在线观看一区二区三区| 色婷婷久久久亚洲欧美| 99国产综合亚洲精品| 99精品在免费线老司机午夜| 国产在线观看jvid| 又大又爽又粗| 在线国产一区二区在线| 国产在线观看jvid| 男人操女人黄网站| 成人国产综合亚洲| 欧美日韩亚洲综合一区二区三区_| 亚洲avbb在线观看| 51午夜福利影视在线观看| 精品无人区乱码1区二区| 曰老女人黄片| 男女床上黄色一级片免费看| 国产97色在线日韩免费| 黑人操中国人逼视频| 在线观看www视频免费| 在线观看免费视频网站a站| 老司机午夜福利在线观看视频| 免费不卡黄色视频| 看片在线看免费视频| 日本免费一区二区三区高清不卡 | 波多野结衣巨乳人妻| 亚洲第一青青草原| 美女扒开内裤让男人捅视频| 午夜影院日韩av| 久久久精品国产亚洲av高清涩受| 999精品在线视频| 久久久久九九精品影院| 九色亚洲精品在线播放| 久久人妻熟女aⅴ| 咕卡用的链子| 久久精品人人爽人人爽视色| 淫妇啪啪啪对白视频| 免费av毛片视频| 久久伊人香网站| 91精品三级在线观看| 女人爽到高潮嗷嗷叫在线视频| 免费人成视频x8x8入口观看| 12—13女人毛片做爰片一| 久久精品国产99精品国产亚洲性色 | 一个人免费在线观看的高清视频| 成年版毛片免费区| 欧美日韩福利视频一区二区| 在线视频色国产色| 黄片播放在线免费| 免费女性裸体啪啪无遮挡网站| 久久国产精品影院| 国产麻豆69| 精品人妻在线不人妻| 久久 成人 亚洲| 69av精品久久久久久| 亚洲国产欧美日韩在线播放| 精品午夜福利视频在线观看一区| 亚洲av成人av| 岛国在线观看网站| 精品熟女少妇八av免费久了| 午夜a级毛片| 丁香六月欧美| 电影成人av| 成人国产一区最新在线观看| √禁漫天堂资源中文www| 国产精品九九99| 老熟妇乱子伦视频在线观看| 一区在线观看完整版| 欧美在线黄色| 精品国产乱子伦一区二区三区| 日本a在线网址| 老司机靠b影院| 中文字幕色久视频| 天堂√8在线中文| 免费在线观看视频国产中文字幕亚洲| 桃红色精品国产亚洲av| 亚洲自拍偷在线| 精品久久久久久久久久免费视频| 国产精品av久久久久免费| 午夜两性在线视频| 成人国语在线视频| 亚洲成av片中文字幕在线观看| 亚洲自偷自拍图片 自拍| 午夜精品在线福利| 美女午夜性视频免费| 精品国产乱子伦一区二区三区| а√天堂www在线а√下载| 久久久久久免费高清国产稀缺| 中文字幕色久视频| 国产一区二区三区综合在线观看| 美女国产高潮福利片在线看| 国产国语露脸激情在线看| 国产蜜桃级精品一区二区三区| 真人做人爱边吃奶动态| 18美女黄网站色大片免费观看| 国产av在哪里看| 欧美久久黑人一区二区| 51午夜福利影视在线观看| 少妇粗大呻吟视频| 国产成人啪精品午夜网站| 国产成人精品在线电影| 亚洲成人免费电影在线观看| 可以免费在线观看a视频的电影网站| 免费高清视频大片| 欧美日韩精品网址| 女警被强在线播放| 精品国产美女av久久久久小说| 精品卡一卡二卡四卡免费| 嫁个100分男人电影在线观看| 在线视频色国产色| 亚洲色图综合在线观看| a级毛片在线看网站| 亚洲电影在线观看av| bbb黄色大片| 国产在线观看jvid| 中文字幕最新亚洲高清| 女生性感内裤真人,穿戴方法视频| 美国免费a级毛片| 男女下面插进去视频免费观看| 亚洲熟女毛片儿| av福利片在线| 国产成人系列免费观看| 欧美国产日韩亚洲一区| 久久精品影院6| 国产亚洲精品一区二区www| 久久亚洲真实| 麻豆久久精品国产亚洲av| 99久久精品国产亚洲精品| av欧美777| 免费观看精品视频网站| 亚洲九九香蕉| 一级黄色大片毛片| 免费在线观看黄色视频的| 成人三级黄色视频| 91大片在线观看| 淫秽高清视频在线观看| 美女国产高潮福利片在线看| 欧美乱妇无乱码| 女人高潮潮喷娇喘18禁视频| 午夜久久久在线观看| 免费高清视频大片| 国产成+人综合+亚洲专区| 久久中文字幕一级| 国产激情欧美一区二区|