① 二級緩存是什麼意思
二級緩存是位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。
CPU最初緩存只有一級,二級緩存出現是為了協調一級緩存與內存之間的速度。二級緩存比一級緩存速度更慢,容量更大,主要就是做一級緩存和內存之間數據臨時交換的地方用。
現在Intel和AMD處理器在一級緩存的邏輯結構設計上有所不同,所以二級緩存對CPU性能的影響也不盡相同。CPU讀取的數據(包括指令)中有80%的數據來自一級緩存,所以一級緩存的邏輯結構決定了CPU二級緩存容量對CPU性能的影響。
(1)緩存的利用率擴展閱讀:
為了保證CPU訪問時有較高的命中率,緩存中的內容應該按一定的演算法替換。一種較常用的演算法是「最近最少使用演算法」(LRU演算法),它是將固定時間內最少被訪問過的行淘汰出局。
需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。
② Mysql緩存
mysql 開啟查詢緩存可以有兩種方法來開啟一種是使用set命令來進行開啟,另一種是直接修改my.ini文件來直接設置都是非常的簡單的哦。
開啟緩存,設置緩存大小,具體實施如下:
windows下是my.ini,linux下是my.cnf;
在配置文件的最後追加上:
需要重啟mysql生效;
b) 開啟緩存,兩種方式:
a)使用mysql命令:
如果報錯:
Query cache is disabled; restart the server with query_cache_type=1 to enable it,還是老老實實的該配置文件,然後重啟吧,原因如下:
查看是否設置成功
show variables like "%query_cache%" 查看是否設置成功:
當然如果你的數據表有更新怎麼辦,沒關系mysql默認會和這個表有關系的緩存刪掉,下次查詢的時候會直接讀表然後再緩存
下面是一個簡單的例子:
以上的相關內容就是對mysql緩存查詢和設置的介紹,望你能有所收獲。
一般,我們會把 query_cache_type 設置為 ON,默認情況下應該是ON
query_cache_type有3個值 0代表關閉查詢緩存OFF,1代表開啟ON,2(DEMAND)代表當sql語句中有SQL_CACHE關鍵詞時才緩存,如:
這樣 當我們執行 select id,name from tableName; 這樣就會用到查詢緩存。
①在 query_cache_type 打開的情況下,如果你不想使用緩存,需要指明
select sql_no_cache id,name from tableName;
②當sql中用到mysql函數,也不會緩存
當然也可以禁用查詢緩存: mysql> set session query_cache_type=off;
上面的顯示,表示設置查詢緩存是可用的。
表示查詢緩存大小,也就是分配內存大小給查詢緩存,如果你分配大小為0,
那麼 第一步 和 第二步 起不到作用,還是沒有任何效果。
上面是 mysql6.0設置默認的,之前的版本好像默認是0的,那麼就要自己設置下。
設置
這里是設置1M左右,900多K。
再次查看下:
顯示我們設置新的大小,表示設置成功。
例如: 如果查詢結果很大, 也緩存????這個明顯是不可能的。
MySql 可以設置一個最大的緩存值,當你查詢緩存數結果數據超過這個值就不會
進行緩存。預設為1M,也就是超過了1M查詢結果就不會緩存。
這個是默認的數值,如果需要修改,就像設置緩存大小一樣設置,使用set
重新指定大小。
好了,通過4個步驟就可以 打開了查詢緩存,具體值的大小和查詢的方式 這個因不同
的情況來指定了。
mysql查詢緩存相關變數
MySQL 提供了一系列的 Global Status 來記錄 Query Cache 的當前狀態,具體如下:
Qcache_free_blocks:目前還處於空閑狀態的 Query Cache 中內存 Block 數目
Qcache_free_memory:目前還處於空閑狀態的 Query Cache 內存總量
Qcache_hits:Query Cache 命中次數
Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次數,也就是沒有命中的次數
Qcache_lowmem_prunes:當 Query Cache 內存容量不夠,需要從中刪除老的 Query Cache 以給新的 Cache 對象使用的次數
Qcache_not_cached:沒有被 Cache 的 SQL 數,包括無法被 Cache 的 SQL 以及由於 query_cache_type 設置的不會被 Cache 的 SQL
Qcache_queries_in_cache:目前在 Query Cache 中的 SQL 數量
Qcache_total_blocks:Query Cache 中總的 Block 數量
檢查是否從查詢緩存中受益的最簡單的辦法就是檢查緩存命中率
當伺服器收到SELECT 語句的時候,Qcache_hits 和Com_select 這兩個變數會根據查詢緩存
的情況進行遞增
查詢緩存命中率的計算公式是:Qcache_hits/(Qcache_hits + Com_select)。
query_cache_min_res_unit的配置是一柄」雙刃劍」,默認是4KB,設置值大對大數據查詢有好處,但如果你的查詢都是小數據 查詢,就容易造成內存碎片和浪費。
查詢緩存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
如果查詢緩存碎片率超過20%,可以用FLUSH QUERY CACHE整理緩存碎片,或者試試減小query_cache_min_res_unit,如果你的查詢都是小數據量的話。
查詢緩存利用率 = (query_cache_size - Qcache_free_memory) / query_cache_size * 100%
查詢緩存利用率在25%以下的話說明query_cache_size設置的過大,可適當減小;查詢緩存利用率在80%以上而且 Qcache_lowmem_prunes > 50的話說明query_cache_size可能有點小,要不就是碎片太多。
查詢緩存命中率 = (Qcache_hits - Qcache_inserts) / Qcache_hits * 100%
示例伺服器 查詢緩存碎片率 = 20.46%,查詢緩存利用率 = 62.26%,查詢緩存命中率 = 1.94%,命中率很差,可能寫操作比較頻繁吧,而且可能有些碎片。
查詢緩存可以看做是SQL文本和查詢結果的映射。如果第二次查詢的SQL和第一次查詢的SQL完全相同(注意必須是完全相同,即使多一個空格或者大小寫不同都認為不同)且開啟了查詢緩存,那麼第二次查詢就直接從查詢緩存中取結果,可以通過下面的SQL來查看緩存命中次數(是個累加值):
另外即使完全相同的SQL,如果使用不同的字元集、不同的協議等也會被認為是不同的查詢而分別進行緩存。
在表的結構或數據發生改變時,查詢緩存中的數據不再有效。有這些INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE會導致緩存數據失效。所以查詢緩存適合有大量相同查詢的應用,不適合有大量數據更新的應用。
可以使用下面三個SQL來清理查詢緩存:
1、FLUSH QUERY CACHE; // 清理查詢緩存內存碎片。
2、RESET QUERY CACHE; // 從查詢緩存中移出所有查詢。
3、FLUSH TABLES; //關閉所有打開的表,同時該操作將會清空查詢緩存中的內容。
Query Cache是MySQL Server層的一個非常好的特性,對於小數據集或訪問量非常集中的應用場景,有非常好的性能提升,但是Query Cache引入了一些新的問題,而且大部分場景下比較雞肋,官方打算棄用了
參考:
https://www.cnblogs.com/wangzhuxing/p/5223881.html
https://www.cnblogs.com/lixiuran/archive/2014/03/08/3588654.html
③ 路由器中緩存的作用
當下路由器其主要系統性能指吞吐率
利用率
丟包率
延遲
緩存大小
實現復雜性等
當鏈路上發生擁塞時能夠對新進入的數據包進行緩存
從而降低丟包率
維持高鏈路利用率
簡單的說路由器緩存是一種可以加快你訪問網頁速度的臨時文件存儲空間
④ cpu緩存越大越好嗎
CPU緩存並不是越大越好,因為緩存採用的是速度快、價格昂貴的靜態RAM(SRAM),由於每個SRAM內存單元都是由4~6個晶體管構成,增加緩存會帶來CPU集成晶體管個數大增,發熱量也隨之增大,給設計製造帶來很大的難度。所以就算緩存容量做得很大,但如果設計不合理會造成緩存的延時,CPU的性能也未必得到提高。
⑤ CPU緩存大小的作用是什麼
最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,用新增的一種一級追蹤緩存替代指令緩存,容量為12KμOps,表示能存儲12K條微指令。
隨著CPU製造工藝的發展,二級緩存也能輕易的集成在CPU內核中,容量也在逐年提升。現在再用集成在CPU內部與否來定義一、二級緩存,已不確切。而且隨著二級緩存被集成入CPU內核中,以往二級緩存與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳輸速度。 二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。 CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率。
為了保證CPU訪問時有較高的命中率,緩存中的內容應該按一定的演算法替換。一種較常用的演算法是「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。
CPU產品中,一級緩存的容量基本在4KB到64KB之間,二級緩存的容量則分為128KB、256KB、512KB、1MB、2MB等。一級緩存容量各產品之間相差不大,而二級緩存容量則是提高CPU性能的關鍵。二級緩存容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部晶體管數的增加,要在有限的CPU面積上集成更大的緩存,對製造工藝的要求也就越高.
⑥ CPU也有內存緩存到底是怎麼回事
分類: 電腦/網路 >> 電腦常識
解析:
CPU緩存的工作原理
當CPU要讀取一個數據時,首先會從緩存(Cache)中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。
通過優化的的讀取機制,可以使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。
早期的CPU緩存容量很小,並且功能單一,Intel從Pentium時代後把緩存進行了分類,當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上和主板上的緩存等不同類型,於是當時便把CPU內核集成的緩存稱為一級緩存(L1 cache),而外部的稱為二級緩存(L2 Cache);後來隨著生產技術的不斷提高,最終二級緩存也被挪進了CPU當中。通常一級緩存中還分數據緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了CPU效能。此外,Intel在Pentium 4 CPU中還增加了一種一級追蹤緩存,容量為12KB。
L1 cache vs L2 Cache
用於存儲數據的緩存部分通常被稱為RAM,掉電以後其中的信息就會消失。RAM又分兩種,其中一種是靜態RAM(SRAM);另外一種是動態RAM(DRAM)。前者的存儲速度要比後者快得多,我們現在使用的內存一般都是動態RAM。CPU的L1級緩存通常都是靜態RAM,速度非常的快,但是靜態RAM集成度低(存儲相同的數據,靜態RAM的體積是動態RAM的6倍),而且價格也相對較為昂貴(同容量的靜態RAM是動態RAM的四倍)。擴大靜態RAM作為緩存是一個不太合算的做法,但是為了提高系統的性能和速度又必須要擴大緩存,這就有了一個折中的方法:在不擴大原來的靜態RAM緩存容量的情況下,僅僅增加一些高速動態RAM做為L2級緩存。高速動態RAM速度要比常規動態RAM快,但比原來的靜態RAM緩存慢,而且成本也較為適中。一級緩存和二級緩存中的內容都是內存中訪問頻率高的數據的復製品(映射),它們的存在都是為了減少高速CPU對慢速內存的訪問。
二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上存在差異,由此可見二級緩存對CPU的重要性。CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率,從某種意義上說,預取效率的提高,大大降低了生產成本卻提供了非常接近理想狀態的性能。除非某天生產技術變得非常強,否則內存仍會存在,緩存的性能遞增特性也仍會保留。
CPU緩存與內存的關系
既然CPU緩存能夠在很大程度上提高CPU的性能,那麼,有些朋友可能會問,是不是將來有可能,目前的系統內存將會被CPU取代呢?
答案應該是否定的,首先,盡管CPU緩存的傳輸速率確實很高,但要完全取代內存的地位仍不可行,這主要是因為緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,與此同時系統的速度就慢了下來,不過CPU會把這些數據復制到緩存中去,以便下一次不用再到內存中去取。也即是說,隨著緩存增大到一定程度,其對CPU性能的影響將越來越小,在性能比上來說,越來越不合算。
就目前緩存容量、成本以及功耗表現來看,還遠遠無法與內存抗衡,另外從某種意義上來說,內存也是CPU緩存的一種表現形式,只不過在速率上慢很多,然而卻在容量、功耗以及成本方面擁有巨大優勢。如果內存在將來可以做到足夠強的話,反而很有取代CPU緩存的可能。
緩存的讀寫演算法同樣重要
即便CPU內部集成的緩存數據交換能力非常強,也仍需要對調取數據做一定的篩選。這是因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據經常是被訪問最頻繁的。命中率演算法中較常用的「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。
小結
高速緩存做為CPU不可分割的一部分,已經融入到性能提升的考慮因素當中,伴隨生產技術的進一步發展,緩存的級數還將增加,容量也會進一步提高。作為CPU性能助推器的高速緩存,仍會在成本和功耗控制方面發揮巨大的優勢,而性能方面也會取得長足的發展。
⑦ CPU一級緩存的緩存
緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。
正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。 一般來說,一級緩存可以分為一級數據緩存(Data Cache,D-Cache)和一級指令緩存(Instruction Cache,I-Cache)。
二者分別用來存放數據以及對執行這些數據的指令進行即時解碼,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。目前大多數CPU的一級數據緩存和一級指令緩存具有相同的容量,例如AMD的Athlon XP就具有64KB的一級數據緩存和64KB的一級指令緩存,其一級緩存就以64KB 64KB來表示,其餘的CPU的一級緩存表示方法以此類推。 緩存的讀寫演算法同樣重要即便CPU內部集成的緩存數據交換能力非常強,也仍需要對調取數據做一定的篩選。這是因為隨著時間的變化,被訪問得最頻繁的數據不是一成不變的,也就是說,剛才還不頻繁的數據,此時已經需要被頻繁的訪問,剛才還是最頻繁的數據,現在又不頻繁了,所以說緩存中的數據要經常按照一定的演算法來更換,這樣才能保證緩存中的數據經常是被訪問最頻繁的。命中率演算法中較常用的「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。 高速緩存做為CPU不可分割的一部分,已經融入到性能提升的考慮因素當中,伴隨生產技術的進一步發展,緩存的級數還將增加,容量也會進一步提高。作為CPU性能助推器的高速緩存,仍會在成本和功耗控制方面發揮巨大的優勢,而性能方面也會取得長足的發展。
⑧ 華為交換機緩存利用率
可以使埠利用率達到90%,而且可解決掉包的問題。
假設是接存儲伺服器的埠流量超過了90%。先在5700上面查看有沒有mac地址漂移,也就是環路之類的。如果沒有,可以在2700和3700的埠查看實時流量,最後在5700的下聯的4個埠查看實時流量,加減算下。5700接3個存儲伺服器的3個口的實時流量是不是差不多的。如果是是差不多的,就說明是本來區域網內監控終端產生的流量太多了,可以考慮5700換成6700,用全萬兆的方案。如果監控終端產生的流量明顯小於交換機接存儲伺服器埠的流量,那就查下5700有接了哪些設備。流量是從哪些埠產生的。
包轉發率,用來衡量網路設備轉發數據能力的標准。交換機的包轉發率標志了交換機轉發數據包能力的大小。單位一般為pps(包每秒)。也可以這么說包轉發速率是指交換機每秒可以轉發多少百萬個數據包(Mpps),即交換機能同時轉發的數據包的數量。包轉發率以數據包為單位體現了交換機的交換能力。