[發明專利]高爭用環境下的細粒度鎖設計方法在審
| 申請號: | 201910532372.1 | 申請日: | 2019-06-19 |
| 公開(公告)號: | CN110413260A | 公開(公告)日: | 2019-11-05 |
| 發明(設計)人: | 張舉武 | 申請(專利權)人: | 四川長虹電器股份有限公司 |
| 主分類號: | G06F8/20 | 分類號: | G06F8/20 |
| 代理公司: | 成都虹橋專利事務所(普通合伙) 51124 | 代理人: | 郝迎賓 |
| 地址: | 621000 四*** | 國省代碼: | 四川;51 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 爭用 細粒度 集合 存儲 引用 原語 技術方案要點 獨立線程 環境提供 死鎖檢測 提升性能 同步操作 定位鎖 最大化 創建 分段 喚醒 保存 淘汰 優化 維護 | ||
1.高爭用環境下的細粒度鎖設計方法,其特征在于,包括如下步驟:
步驟1、采用Java原語實現基礎鎖機制;
步驟2、進行Key存儲;
步驟3、對Key進行hash分段;
步驟4、維護兩個集合分別來存儲強引用鎖和弱引用鎖;
步驟5、對集合大小進行限制,并采用LRU算法進行淘汰;
步驟6、計算hash值,未在segment中找到時,創建鎖,保存hash值到segment,集合中存入該鎖,然后執行同步操作;
步驟7、先定位鎖,然后執行喚醒操作;
步驟8、創建獨立線程進行死鎖檢測。
2.根據權利要求1所述的高爭用環境下的細粒度鎖設計方法,其特征在于,步驟2中,使用Memory或Cache或DataBase或FileSystem進行Key存儲。
3.根據權利要求1所述的高爭用環境下的細粒度鎖設計方法,其特征在于,步驟3具體包括如下步驟:
步驟301、實現Lock類增加入參調整鎖分段粒度以及鎖引用類型;
步驟302、維護一個segment容器來存放存儲對象的hash值,和鎖對象的存儲下標;
步驟303、根據傳入的粒度來調整hash mask,進而調整分段的大小實現hash分段。
4.根據權利要求3所述的高爭用環境下的細粒度鎖設計方法,其特征在于,步驟303中,所述傳入的粒度范圍為1~100。
5.根據權利要求1所述的高爭用環境下的細粒度鎖設計方法,其特征在于,步驟5具體包括如下步驟:
步驟501、Key第一次被訪問,加入到訪問歷史列表;
步驟502、如果數據在訪問歷史列表里后沒有達到K次,則按照一定規則淘汰;
步驟503、當訪問歷史隊列中的數據訪問次數達到K次,將數據索引從歷史隊列刪除,將數據移到緩存隊列中,并緩存此數據,緩存隊列重新按照時間排序;
步驟504、緩存數據隊列中被再次訪問后,重新排序;
步驟505、需要淘汰數據時,淘汰緩存隊列中排在末尾的數據,即:淘汰倒數第K次訪問離現在最久的數據。
6.根據權利要求5所述的高爭用環境下的細粒度鎖設計方法,其特征在于,步驟502、503及步驟505中,所述K為規定次數,并且為正整數。
7.根據權利要求1所述的高爭用環境下的細粒度鎖設計方法,其特征在于,步驟6中,通過lock和/或tryLock計算hash值。
8.根據權利要求1所述的高爭用環境下的細粒度鎖設計方法,其特征在于,步驟7中,通過notify實現定位鎖。
9.根據權利要求1所述的高爭用環境下的細粒度鎖設計方法,其特征在于,步驟8具體包括如下步驟:
步驟801、創建Normal級別的khungtaskd內核線程,在死循環中每隔sysctl_hung_task_timeout_secs時間后check一下,用schedule_timeout定時;
步驟802、調用do_each_thread,while_each_thread宏遍歷所有的進程信息,并檢查最近切換次數和task計算是否一致,并根據sysctl_hung_task_panic開關決定是否重啟;
步驟803、通過cpu_callback函數調用watchdog_enable,在每個CPU core上創建SCHED_FIFO級別的實時線程watchdog,其中使用了hrtimer定時器,控制檢查周期;
步驟804、hrtimer定時器調用watchdog_timer_fn進行檢查,如果watchdog_timer_fn發現出危險值,則根據開關進行panic處理。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于四川長虹電器股份有限公司,未經四川長虹電器股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910532372.1/1.html,轉載請聲明來源鉆瓜專利網。





