TWI687808B - 減少寫入效能變化並防止io阻塞的方法 - Google Patents
減少寫入效能變化並防止io阻塞的方法 Download PDFInfo
- Publication number
- TWI687808B TWI687808B TW108102990A TW108102990A TWI687808B TW I687808 B TWI687808 B TW I687808B TW 108102990 A TW108102990 A TW 108102990A TW 108102990 A TW108102990 A TW 108102990A TW I687808 B TWI687808 B TW I687808B
- Authority
- TW
- Taiwan
- Prior art keywords
- write request
- solid state
- amount
- time
- state drive
- Prior art date
Links
Images
Landscapes
- Memory System (AREA)
Abstract
本發明係揭露一種減少寫入效能變化並防止IO阻塞的方法包括接收一寫入請求的步驟。然後,判斷一固態硬碟的狀態是正常或受限。若固態硬碟的狀態是正常,則處理此寫入請求。若固態硬碟的狀態是受限,則把此寫入請求插入寫入請求佇列。監視在寫入請求佇列的第一寫入請求並計算預計等待時間。判斷第一寫入請求的已耗時間是否大於或等於預計等待時間。若第一寫入請求的已耗時間小於預計等待時間,則等待一段時間,然後回到監視在寫入請求佇列的第一寫入請求並計算預計等待時間的步驟。若第一寫入請求的已耗時間大於或等於預計等待時間,則處理第一寫入請求,並從寫入請求佇列移除第一寫入請求。判斷寫入請求佇列是否已空。若寫入請求佇列不空,則回到等待一段時間的步驟。若寫入請求佇列已空,則結束。
Description
本發明有關於固態硬碟,更特定地,有關於在固態硬碟裡減少寫入效能變化並防止IO阻塞的方法。
固態硬碟的韌體須執行一些系統任務並/或讀/寫系統資料。這些任務或讀/寫會使寫入效能降低一段時間。固態硬碟製造商想避免這種寫入效能的變化。固態硬碟製造商還想避免IOPS(input/output per second)降為零。IOPS為零的情形被稱為「IO阻塞」,這情形令使用者感覺系統不回應。造成低或零IOPS的主要原因是垃圾回收任務佔用快閃記憶體的多數帶寬。一種解決方法是延遲垃圾回收任務。然而,延遲垃圾回收任務可能使固態硬碟的可用的貯存空間不足。另一種解決方法是把固態硬碟做成有多核心,並用其中一核心進行讀/寫任務,另一核心進行垃圾回收任務。然而,多用一核心就會增加固態硬碟的成本。
有鑑於上述習知技藝之問題,本發明之目的在於提供一種有效且省成本的減少寫入效能變化並防止IO阻塞的方法。
為達成上述目的,此減少寫入效能變化並防止IO阻塞的方法包括接收一寫入請求的步驟。然後,判斷一固態硬
碟的狀態是「正常」或「受限」。若固態硬碟的狀態是「正常」,則實現此寫入請求。若固態硬碟的狀態是「受限」,則把此寫入請求插入寫入請求佇列。監視在寫入請求佇列的第一寫入請求並計算預計等待時間。判斷第一寫入請求的已耗時間是否大於或等於預計等待時間。若第一寫入請求的已耗時間小於預計等待時間,則等待一段時間,然後回到監視在寫入請求佇列的第一寫入請求並計算預計等待時間的步驟。若第一寫入請求的已耗時間大於或等於預計等待時間,則實現第一寫入請求,並從寫入請求佇列移除第一寫入請求。判斷寫入請求佇列是否已空。若寫入請求佇列不空,則回到等待一段時間的步驟。若寫入請求佇列已空,則結束。
10‧‧‧主機
11、13‧‧‧中央處理單元
12、14‧‧‧韌體
15‧‧‧記憶體
16‧‧‧固態硬碟控制器
S10‧‧‧供電
S20‧‧‧初始化
S22‧‧‧Core 0運作
S24‧‧‧初始化記憶體
S26‧‧‧設流程控制為正常
S28‧‧‧設垃圾回收效率為一預設值
S30‧‧‧Core 0叫醒Core 1
S40‧‧‧監視自由區塊的量
S42‧‧‧判斷自由區塊的量是否小於或等於第一閥值
S44‧‧‧設流程控制為受限
S46‧‧‧回收一區塊並開始一計時器
S48‧‧‧回收垃圾
S50‧‧‧停止計時器並計算垃圾回收效率
S52‧‧‧判斷自由區塊的量是否大於或等於第二閥值
S54‧‧‧設流程控制為「正常」
S70‧‧‧Core 1處理寫入請求
S72‧‧‧接收一寫入請求
S74‧‧‧判斷流程控制是否「正常」
S76‧‧‧實現寫入請求
S78‧‧‧把寫入請求插入寫入請求佇列
S80‧‧‧監視在寫入請求佇列中的第一寫入請求,並計算預計等待時間
S82‧‧‧判斷第一寫入請求已耗時間是否大於或等於預計等待時間
S84‧‧‧等待一段適當時間
S86‧‧‧實現第一寫入請求,並從寫入請求佇列移除第一寫入請求
S88‧‧‧判斷寫入請求佇列是否空
S90‧‧‧結束
第1圖是一資料貯存裝置的方塊圖,該資料貯存裝置可執行本發明的較佳實施例的減少寫入效能變化並防止IO阻塞的方法;第2圖是本發明的較佳實施例的減少寫入效能變化並防止IO阻塞的方法的流程圖;第3圖是第2圖所示的方法的一子程序的流程圖;第4圖是第2圖所示的方法的另一子程序的流程圖;及第5圖是第2圖所示的方法的另一子程序的流程圖。
以下請參照相關圖式進一步說明本發明的減少寫入效能變化並防止IO阻塞的方法的較佳實施例。為便於理解本
發明,以下用相同符號標示相同元件。
參考第1圖,一主機10連接一固態硬碟控制器16。固態硬碟控制器16包括兩個中央處理單元11及13及一共享的記憶體15。中央處理單元11通常被稱為Core 1,並連接主機10。中央處理單元13通常被稱為Core 0,並連接中央處理單元11。記憶體15連接中央處理單元11及13。
運作時,中央處理單元11執行韌體12,並從主機10接收寫入請求。中央處理單元13執行韌體14,並從中央處理單元11接收指令。中央處理單元13還產生二變數,即「流程控制」及「垃圾回收效率」,並把這兩個變數存入記憶體15。流程控制對應固態硬碟的狀態。流程控制有兩個值,即「正常」或「受限」。所謂「垃圾回收效率」就是單位時間回收的資料量。固態硬碟控制器16可執行本發明的較佳實施例的減少寫入效能變化並防止IO阻塞的方法。流程控制及垃圾回收效率被用於本發明的較佳實施例的減少寫入效能變化並防止IO阻塞的方法中。
圖2顯示本發明的較佳實施例的減少寫入效能變化並防止IO阻塞的方法。在S10,供電給固態硬碟控制器16。然後,程序走到S20。
參考第3圖,S20代表一初始化程序。在此初始化程序中,在S22,中央處理單元13執行韌體14。然後,程序走到S24。
在S24,初始化記憶體15。然後,程序走到S26。
在S26,設「流程控制」為「正常」。然後,程序走到S28。
在S28,設「垃圾回收效率」為N。N代表一預設
值(default)。然後,程序走到S30。
在S30,中央處理單元13叫醒中央處理單元11。中央處理單元11執行韌體12。然後,中央處理單元13執行S40,且中央處理單元11執行S70(第2圖)。
參考第2圖,在S40,中央處理單元13監視自由區塊的量。然後,程序走到S42。
在S42,判斷自由區塊的量是否小於或等於一第一閥值。若自由區塊的量小於或等於第一閥值,則程序走到S44而回收垃圾。若自由區塊的量大於第一閥值,則程序回到S40。
在S44,設流程控制為「受限」。如前所述,此時自由區塊的量小於第一閥值,以致不能以正常速率寫資料。因此,設流程控制為「受限」。然後,程序走到S46。
在S46,挑選一個區塊並回收垃圾,且開始一個計時器。然後,程序走到S48。被回收的區塊成為自由區塊。
在S48,計算這個區塊被回收的垃圾的量。然後,程序走到S50。
在S50,停止計時器,計算垃圾回收效率,並把垃圾回收效率存入記憶體15。計算垃圾回收效率的做法是以被計時器記錄的時間除被回收的垃圾的量。然後程序走到S52。
在S52,判斷自由區塊的量是否大於或等於一第二閥值相比。若自由區塊的量小於第二閥值,則程序回到S46。若自由區塊的量大於或等於第二閥值,則程序走到S54。第二閥值應適度地大於第一閥值,否則垃圾回收的頻率會很高而每回合的時間會很短。
在S54,設流程控制為「正常」。然後程序回到S40。
參考第4圖及第5圖,S70代表另一子程序。在
S70,中央處理單元11處理寫入請求。
在此子程序中,在S72,中央處理單元11從主機10接收一寫入請求。然後,程序走到S74。
在S74,判斷流程控制是否正常。若是,則程序走到S76,否則程序走到S78。
S76,實現(fulfill)寫入請求。具體而言,中央處理單元11把寫入請求送到中央處理單元13。然後,中央處理單元13實現此寫入請求。所謂「實現」寫入請求是依寫入請求把資料寫入固態硬碟。
在S78,把寫入請求插入寫入請求佇列(queue)。亦即,把寫入請求排在其他寫入請求之後,等待實現。然後,程序走到S80。
在S80,監視在寫入請求佇列中的第一寫入請求,並計算預計等待時間。所謂「預計等待時間」是經計算所得之第一寫入請求應等待實現的時間。計算預計等待時間的做法是中央處理單元11從記憶體15讀垃圾回收效率,並以垃圾回收效率除第一寫入請求的資料量。然後程序走到S82。
在S82,判斷第一寫入請求已耗(elapsed)時間是否大於或等於預計等待時間。所謂「已耗時間」是第一寫入請求已耗在等待實現的時間。第一寫入請求的已耗時間是從中央處理單元11監視第一寫入請求起算。若是,則程序走到S86,否則程序走到S84。
在S84,等待一段適當時間。這段適當時間可能是幾秒。然後,程序回到S80。
在S86,實現第一寫入請求,並從寫入請求佇列移除第一寫入請求。實現第一寫入請求的做法是中央處理單元11
把第一寫入請求送到中央處理單元13。然後,中央處理單元13實現第一寫入請求。然後,程序走到S88。
在S88,判斷寫入請求佇列是否空。若是,則程序走到S90,否則程序回到S84。
在S90,程序結束。
以上所述說明,僅為本發明的較佳實施方式而已,意在明確本發明的特徵,非用以限定本發明實施例的範圍,本技術領域內的一般技術人員根據本發明所作的均等變化,以及本領域內技術人員熟知的改變,仍應屬本發明涵蓋的範圍。
S10‧‧‧供電
S20‧‧‧初始化
S40‧‧‧監視自由區塊的量
S42‧‧‧判斷自由區塊的量是否小於或等於第一閥值
544‧‧‧設流程控制為「受限」
S46‧‧‧回收一區塊並開始一計時器
S48‧‧‧回收垃圾
S50‧‧‧停止計時器並計算垃圾回收效率
S52‧‧‧判斷自由區塊的量是否大於或等於第二閥值
S54‧‧‧設流程控制為「正常」
S70‧‧‧Core 1處理寫入請求
Claims (8)
- 一種減少寫入效能變化並防止IO阻塞的方法,其包括以下步驟:接收一寫入請求(S72);判斷一固態硬碟的狀態是正常或受限(S74);若固態硬碟的狀態是正常,則處理此寫入請求(S76);若固態硬碟的狀態是受限,則把此寫入請求插入寫入請求佇列(S78);監視在寫入請求佇列的第一寫入請求並計算預計等待時間(S80);判斷第一寫入請求的已耗時間是否大於或等於預計等待時間(S82);若第一寫入請求的已耗時間小於預計等待時間,則等待一段時間(S84),然後回到監視在寫入請求佇列的第一寫入請求並計算預計等待時間的步驟(S80);若第一寫入請求的已耗時間大於或等於預計等待時間,則處理第一寫入請求,並從寫入請求佇列移除第一寫入請求(S86);判斷寫入請求佇列是否已空(S88);若寫入請求佇列不空,則回到等待一段時間的步驟(S84);及若寫入請求佇列已空,則結束。
- 如申請專利範圍第1項所述之方法,其還包括以下步驟: 在接收一寫入請求(S72)的步驟以前,設固態定固態硬碟的狀態為正常(S26);及在接收一寫入請求(S72)的步驟的同時或以後,設固態硬碟的狀態為正常或受限。
- 如申請專利範圍第2項所述之方法,其中設固態硬碟的狀態為正常或受限的步驟包括以下步驟:監視自由區塊的量(S40);判斷自由區塊的量是否小於或等於一第一閥值(S42);若自由區塊的量小於或等於第一閥值,則設固態硬碟的狀態為受限(S44);及若自由區塊的量大於第一閥值,則回到監視自由區塊的量的步驟(S40)。
- 如申請專利範圍第3項所述之方法,其中在設固態硬碟的狀態為受限的步驟(S44)以後還包括以下步驟:回收一個區塊並使之成為自由區塊(S46);計算回收的區塊的量(S48);及判斷自由區塊的量是否大於或等於一第二閥值(S52);若自由區塊的量小於第二閥值,則回到回收區塊的步驟(S46);及若自由區塊的量大於或等於第二閥值,則設固態硬碟的狀態為正常(S54)。
- 如申請專利範圍第4項所述之方法,其中第二閥值大於或等於 第一閥值。
- 如申請專利範圍第4項所述之方法,其中在設固態硬碟的狀態為受限的步驟(S44)以後還包括計算垃圾回收效率的步驟(S50)。
- 如申請專利範圍第6項所述之方法,其中在計算垃圾回收效率的步驟(S50)以前還包括以下步驟:在回收一個區塊的步驟(S46)後,開始一計時器;及在回收一個區塊的步驟(S46)後,計算回收的垃圾的量(S48)。
- 如申請專利範圍第6項所述之方法,其中計算垃圾回收效率的步驟(S50)包括以下步驟:以被計時器測得的時間除被回收的垃圾的量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108102990A TWI687808B (zh) | 2019-01-25 | 2019-01-25 | 減少寫入效能變化並防止io阻塞的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108102990A TWI687808B (zh) | 2019-01-25 | 2019-01-25 | 減少寫入效能變化並防止io阻塞的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI687808B true TWI687808B (zh) | 2020-03-11 |
TW202028983A TW202028983A (zh) | 2020-08-01 |
Family
ID=70767362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108102990A TWI687808B (zh) | 2019-01-25 | 2019-01-25 | 減少寫入效能變化並防止io阻塞的方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI687808B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201636839A (zh) * | 2015-04-15 | 2016-10-16 | Alibaba Group Services Ltd | 一種實現資源調度的方法與設備 |
CN107959635A (zh) * | 2017-11-23 | 2018-04-24 | 郑州云海信息技术有限公司 | 一种基于令牌桶算法的iops控制方法及装置 |
TW201818262A (zh) * | 2016-11-01 | 2018-05-16 | 香港商阿里巴巴集團服務有限公司 | 讀寫請求處理方法及裝置 |
CN108196954A (zh) * | 2017-12-28 | 2018-06-22 | 杭州时趣信息技术有限公司 | 一种文件读写方法、系统、设备及计算机存储介质 |
TW201833938A (zh) * | 2017-03-07 | 2018-09-16 | 南韓商三星電子股份有限公司 | 分配資料和報告效能能力的方法及其儲存裝置 |
CN108874324A (zh) * | 2018-07-17 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种访问请求处理方法、装置、设备及可读存储介质 |
-
2019
- 2019-01-25 TW TW108102990A patent/TWI687808B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201636839A (zh) * | 2015-04-15 | 2016-10-16 | Alibaba Group Services Ltd | 一種實現資源調度的方法與設備 |
TW201818262A (zh) * | 2016-11-01 | 2018-05-16 | 香港商阿里巴巴集團服務有限公司 | 讀寫請求處理方法及裝置 |
TW201833938A (zh) * | 2017-03-07 | 2018-09-16 | 南韓商三星電子股份有限公司 | 分配資料和報告效能能力的方法及其儲存裝置 |
CN107959635A (zh) * | 2017-11-23 | 2018-04-24 | 郑州云海信息技术有限公司 | 一种基于令牌桶算法的iops控制方法及装置 |
CN108196954A (zh) * | 2017-12-28 | 2018-06-22 | 杭州时趣信息技术有限公司 | 一种文件读写方法、系统、设备及计算机存储介质 |
CN108874324A (zh) * | 2018-07-17 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种访问请求处理方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TW202028983A (zh) | 2020-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102546255B1 (ko) | 호스트의 지시 없이 능동적으로 유지보수 동작을 개시하는 스토리지 장치 및 그것을 포함하는 전자 시스템 | |
US8117415B2 (en) | Storage device estimating a completion time for a storage operation | |
KR100725417B1 (ko) | 우선 순위에 따른 플래시 메모리의 연산 처리 장치 및 방법 | |
TWI417727B (zh) | 記憶體儲存裝置、其記憶體控制器與回應主機指令的方法 | |
TWI599881B (zh) | 用來適應性地管理一固態硬碟之方法、裝置、與計算機程式產品 | |
US10115442B2 (en) | Demand-based provisioning of volatile memory for use as non-volatile memory | |
US9690703B1 (en) | Systems and methods providing storage system write elasticity buffers | |
TWI694330B (zh) | 儲存裝置、電腦系統及儲存裝置之動作方法 | |
CN113220108B (zh) | 计算机可读取存储介质、操作频率调整方法及装置 | |
TW201333675A (zh) | 基於參數報告更新臨界位準之技術 | |
JP5986607B2 (ja) | データ記憶装置、および、データメンテナンス方法 | |
JP6994535B2 (ja) | ソリッドステートドライブ及びソリッドステートドライブのパフォーマンス最適化方法 | |
CN114564284A (zh) | 虚拟机的数据备份方法、计算机设备及存储介质 | |
JP2016224883A (ja) | 異常検出方法、情報処理装置および異常検出プログラム | |
KR101455085B1 (ko) | 저장 오퍼레이션에 대한 완료 시간을 추정하는 방법 및 저장 디바이스 | |
TWI687808B (zh) | 減少寫入效能變化並防止io阻塞的方法 | |
CN101876950A (zh) | 计算机系统中保护硬盘驱动器的队列溢出防止设备和方法 | |
CN111506256B (zh) | 减少写入效能变化并防止io阻塞的方法 | |
US20200278810A1 (en) | Method for Mitigating Writing-Performance Variation and Preventing IO Blocking in a Solid-State Drive | |
JP6193189B2 (ja) | Nandバックグラウンド処理制御装置 | |
US20150058550A1 (en) | Information recording apparatus that performs refresh of memory and control method therefor | |
JP7007922B2 (ja) | 制御装置、および制御方法 | |
TWI760760B (zh) | 控制閃存裝置存取的電腦程式產品及方法及裝置 | |
US20170168757A1 (en) | Semiconductor device and memory access control method | |
JP2017201481A (ja) | 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム |