額定記憶體進行資源分配

2021-09-05 08:48:07 字數 2102 閱讀 8683

題目剖析

1、資料理解:

整數,1個整數佔4個b,即32bit,40億個整數,佔40億*4b,即16gb

40億,如果用二級制推算,最接近2^32=4,294,967,296(42.9億),即32bit,佔4個b

2、最壞情況:40億個數都不相同,需要輸出4b*40億=160億b=16g

解題重點:

1、找出未出現過的數時,不可以直接將數字儲存並輸出,需要尋找乙個容器

解題思路:

1、尋找策略:借鑑桶排序,用跟資料大小相同長度的陣列標記重複情況

2、容器選擇:bitset,容器體積小,每個元素只能為1或0,可以滿足需求

3、具體做法:

題目解剖:

1、資料理解:

10m,即10240b,即81920bit,如果要用這些來處理40億資料,即要進行分塊處理,每塊的資料量為40億/81920=48.83,比較靠近2^6=64,所以需要拆成64塊,然後分開處理,即每組資料最大量為67,108,864(資料全齊狀態)

2、最壞情況:全部資料都出現過

3、解題策略:如果按上述桶排序思路,需使用500m記憶體,超出要求

解題重點:

1、利用布隆過濾器的思想,先把絕對會出現的資料過濾掉,即採用兩個容器進行統計

解題思路:

1、尋找策略:借鑑布隆過濾器,先排除不是目標的物件,再找未出現的數

2、具體做法:

—第乙個容器:

–第二個容器

合併用記憶體256b+8192kb=8mb,符合條件..

題目剖析:

資料理解:4g即4,294,967,296位元組,可以處理67,108,864個url,即0.67億個。可分兩種情況討論,乙個是小於0.67億個url的時候和大於0.67億個url的時候

解題重點:分類處理

解題思路:

1、n小於0.67億

計算url的hash,通過hash得到每個url的次數,遍歷hash找出最大的三個

2、n大於等於0.67

用hash把n個資料分成y=n/0.67億(分組數量y貼近2^x),在每組找出最多的3個,再在y個組裡找出最多的三個進行比對。

資料理解

乙個url64位元組,每個檔案50億個,即乙個檔案298gb,兩個檔案一共569g,遠大於4g

假設所有url相同,則同時儲存相同url時,需要使用記憶體298gb,也遠大於4g

可以考慮分資料塊考慮問題,例如雜湊分組,每個組內可能有相同的資料,但是不同組肯定沒有相同的資料

假設1個檔案分組n組,則每組占用空間298/n,要用到2組,則每次載入需要空間2*298/n,另考慮計算用的記憶體,假設分成1024組,則每次載入資料使用記憶體598mb。

解題思路

1、將a,b檔案分別按n進行雜湊分組,先將第一組分別載入進陣列。(598)

2、將a陣列對映到hashmap裡面(298),再遍歷b資料,比對是否會存在一樣的url,有就儲存下來,輸出

3、釋放記憶體,再迴圈後續的分組..

資料理解:

1個詞16b,100個詞即1.56kb

1g檔案,存的都是16b的詞,即16,777,216個詞

1m記憶體,最大能存16,384個詞,那麼處理1g的詞,剛好需要1024個分割槽,秉承預留執行記憶體、防止資料嚴重傾斜的思想,劃分2^11即2048個分割槽,每個分割槽使用記憶體情況不確定,因為有可能出現傾斜,出現資料傾斜就要進行二次分組,確保每個分割槽的大小不超過一定的值

解題思路:(理想情況,不需要二次分組)

1、將檔案採用雜湊分組分成2048個分割槽,將第乙個分割槽的資料載入進hashmap,取出value最大的100個詞,持久化到檔案中,這樣就可以得到2048個檔案,每個檔案有1600b的資料,即一共3.125mb

2、將所有檔案載入到記憶體中,將entry放入容量為100的大頂堆裡,按value排序,得到100個最大的值

Spark如何進行動態資源分配

對於spark應用來說,資源是影響spark應用執行效率的乙個重要因素。當乙個長期執行的服務,若分配給它多個executor,可是卻沒有任何任務分配給它,而此時有其他的應用卻資源緊張,這就造成了很大的資源浪費和資源不合理的排程。動態資源排程就是為了解決這種場景,根據當前應用任務的負載情況,實時的增減...

對malloc分配的資源做記憶體對齊

記憶體對齊效能原因 資料結構 尤其是棧 應該盡可能地在自然邊界上對齊。原因在於,為了訪問未對齊的記憶體,處理器需要作兩次記憶體訪問 而對齊的記憶體訪問僅需要一次訪問。個人的一點說明 在c c 中,使用malloc 動態分配的記憶體是隨機的,如果要對分配的這段記憶體運算比較頻繁,可能有效能上的問題,同...

GPU資源分配

gpu 的計算核心是以一定數量的 streaming processor sp 組成的處理器陣列,nv稱之為 texture processing clusters tpc 每個tpc 中又包含一定數量的 streaming multi processor sm 每個sm包含8 個sp。sp 的主要...