Làm cách nào để tăng bộ nhớ ảo và / hoặc hoán đổi cho Matlab?


16

Tình huống: sửa Out of Memorylỗi trong Matlab của Ubuntu
Mục tiêu: phân bổ một số bộ nhớ ảo và / hoặc Hoán đổi trên ổ cứng / SSD ngoài; việc đọc / ghi giảm từ 20 GB / giây xuống còn 0,1 GB / giây, không sao cả!
Thuật ngữ: trao đổi và bộ nhớ ảo ở đây

Không, trao đổi và bộ nhớ ảo là hoàn toàn khác nhau. Ví dụ: ánh xạ bộ nhớ tệp 1GB sử dụng thêm 1GB bộ nhớ ảo nhưng không có thay đổi trong việc sử dụng trao đổi. Hoán đổi là một hình thức của cửa hàng sao lưu. Nhiều cách sử dụng bộ nhớ ảo không liên quan gì đến cửa hàng sao lưu. (Và đã có các hệ thống có bộ nhớ ảo và không có trao đổi cũng như các hệ thống có trao đổi nhưng không có bộ nhớ ảo.)

Phần cứng tiêu dùng bị hạn chế nên tôi cần sử dụng thêm bộ nhớ ảo và / hoặc trao đổi với các ổ cứng gắn ngoài. Matlab nói về bộ nhớ trao đổi (TODO không bao gồm bộ nhớ ảo?)

Hệ thống Linux - Thay đổi không gian trao đổi của bạn bằng cách sử dụng các lệnh mkswapswapon.

Đặc điểm của hệ thống

  • Bạn có thể thấy bạn có bao nhiêu swapon -s

    Filename                Type        Size    Used    Priority
    /dev/sda3               partition   8326140 0       -1
    
  • Cấu hình của Matlab

    % /programming//a/35971040/54964
    com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB
    
    % TODO cannot find ways how to put Matlab use /dev/sda3
    
  • Vì vậy, bạn thấy rằng Matlab của tôi không sử dụng nó. Tôi nhận được Out of Memorylỗi với ma trận lớn trong Matlab. Tôi đã không thành công trong reshapeviệc đưa ma trận vào vectơ và viết mã song song. Vì vậy, tôi muốn sử dụng bộ nhớ ảo vì tôi cần hoàn thành công việc; tỷ lệ không quan trọng.

Mã giả

  1. Shell script tạo ra một trao đổi, bắt đầu MATLAB và xóa trao đổi khi MATLAB thoát. ( MichaelHooreman )
  2. Cho phép trao đổi trên ổ cứng ngoài. Làm thế nào để sử dụng sudo swapon -aở đây?
  3. Bắt đầu Matlab.
  4. Đặt Matlab sử dụng trao đổi.
  5. Xóa trao đổi khi Matlab thoát.

Hoán đổi tạm thời, Chạy ứng dụng khách và Đóng / Xóa Hoán đổi trong tập lệnh của Micheal

Tình huống : không thể kiểm soát lỗi khi thiết lập môi trường (1), chạy Matlab (2) và đóng môi trường (3)
Script

#!/usr/bin/env bash

# /programming//a/69808/54964
set -e 
# TODO How to do swapoff if any error?

SWAP_FILE="/media/masi/SamiSwapVirtual/.swap_file_20.7.2016"
SIZE_MB=16000
TO_RUN="matlab"

dd if="/dev/zero" of=${SWAP_FILE} bs="1M" count=${SIZE_MB} status="progress"
mkswap ${SWAP_FILE}
chmod 0600 ${SWAP_FILE}
sudo chown 0.0 ${SWAP_FILE} # /unix//a/297153/16920
sudo swapon -v ${SWAP_FILE}
echo "Swap enabled. Press enter to continue"; read
${TO_RUN}
echo "I will remove the swap. Press enter to continue"; read
sudo swapoff -v ${SWAP_FILE}
rm -vf ${SWAP_FILE}

Lặp lại 1 với Transcend 25M3 1 TB với ít sử dụng berofe trong đó hệ thống tập tin ext4

  1. Nhật ký sau khi bắt đầu tập lệnh

    sh start_matlab_with_swap.sh 
    16000+0 records in
    16000+0 records out
    16777216000 bytes (17 GB, 16 GiB) copied, 134.489 s, 125 MB/s
    Setting up swapspace version 1, size = 15.6 GiB (16777211904 bytes)
    no label, UUID=48c2835b-4499-4534-aa49-0648e15bd5d9
    [sudo] password for masi: 
    swapon /media/masi/SamiWeek/tmp/swap_file_18.7.2016
    swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: insecure file owner 1000, 0 (root) suggested.
    swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: found swap signature: version 1d, page-size 4, same byte order
    swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: pagesize=4096, swapsize=16777216000, devsize=16777216000
    Swap enabled. Press enter to continue
    start_matlab_with_swap.sh: 11: read: arg count
    
  2. Chạy máy khách

    • Lịch sử lệnh đã xuất hiện trong lần khởi động đầu tiên của Matlab trong bộ nhớ trao đổi (vé # 02075943), với lỗi Có vấn đề khi đọc lịch sử lệnh của bạn - - . Chỉ cần khởi động lại Matlab của bạn và vấn đề được giải quyết nếu bạn có cài đặt mặc định. Lệnh prefdircho /home/masi/.matlab/R2016ađó là vị trí mặc định ( /home/{username}/.matlab/R2016a. Tệp /home/masi/.matlab/R2016a/matlab.prftồn tại sau khi khởi động lại, ở đây .

    • ... [các lỗi khác] ...

  3. Đóng Matlab và gõ lại mật khẩu trong Terminal

    [sudo] password for masi: 
    swapoff /media/masi/SamiWeek/tmp/swap_file_18.7.2016
    [ bugs here! ]
    

Mở: Làm thế nào để áp dụng xử lý lỗi tốt hơn đối với bẫy lỗi ở đây? Xem kịch bản của tôi cho ví dụ trong nguồn. Chủ đề Cách thực hiện Bẫy lỗi và Hoán đổi nếu Lỗi / Cảnh báo?

Hoán đổi vĩnh viễn = Thiết lập hoán đổi riêng biệt từ Máy khách đang chạy

Thiết lập hoán đổi

# /unix//q/297767/16920
masi@masi:~$ sudo fallocate -l 20G /mnt/.swapfile

masi@masi:~$ sudo mkswap /mnt/.swapfile 
Setting up swapspace version 1, size = 20 GiB (21474832384 bytes)
no label, UUID=45df9e48-1760-47e8-84d7-7a14f56bbd72

masi@masi:~$ sudo swapon /mnt/.swapfile
swapon: /mnt/.swapfile: insecure permissions 0644, 0600 suggested.

masi@masi:~$ sudo chmod 600 /mnt/.swapfile

masi@masi:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7925        1494         175         196        6255        5892
Swap:         28610           0       28610

Đặt những điều sau vào cuối /etc/fstabcho sự thay đổi vĩnh viễn

# /unix//a/298212/16920
# /unix//a/298543/16920

# If swap is on SSD, trim blocks each time at startup.
#/mnt/.swapfile  none    swap    defaults,discard      0        0

# If swap on External HDD, just use sw.
/media/masi/SamiWeek/.swapfile  none    swap    sw      0        0

Hệ thống: Linux Ubuntu 16.04 64 bit
Linux kernel: 4.6
tùy chọn Linux kernel: wl
Matlab: 2016a
chính thức Matlab tài liệu: Giải quyết "Out of Memory" Lỗi
External HDD: Transcend 1 TB StoreJet 25M3 xem xét , Transcend 2 TB StoreJet 25M3
External HDD hệ thống tập tin: ext4
Bộ đệm HDD ngoài: 8 MB
Chủ đề liên quan: Làm thế nào để tăng giới hạn bộ nhớ MATLAB trong ubfox? (làm thế nào để sử dụng mkswap, hoán đổi cho MATLAB?) , Làm thế nào để giảm tăng bộ nhớ vật lý trong Matlab? , Làm thế nào để khắc phục lỗi bộ nhớ trong Matlab? , Làm thế nào để khắc phục lỗi hết bộ nhớ trong Matlab cho ma trận 10800x10800? ,Làm cách nào để tăng giới hạn bộ nhớ (liền kề cũng như tổng thể) trong Matlab r2012b? , Làm cách nào để tăng khối mảng và giải quyết lỗi bộ nhớ trong Matlab 2009b? , Làm thế nào để giải quyết vấn đề hết bộ nhớ này cho một biến nhỏ trong Matlab? , 'Hết bộ nhớ' trong Matlab. Một giải pháp chậm nhưng vĩnh viễn?


4
Xin lỗi điều này không trả lời câu hỏi. Nhưng bạn có chắc bạn muốn điều này? Làm các tính toán từ trao đổi mất nhiều thời gian không thể tin được. Ram đọc ít nhất 20 GB mỗi giây, ổ cứng gắn ngoài của bạn sẽ đọc ở mức dưới 0,1 GB / giây
Anake

1
@ Trả lời Có, tôi biết. Nó không phải là vấn đề. Tôi có ma trận lớn có thể được tính toán với 32/64 GB nhưng không phải với ultrabook 8 GB hiện tại của tôi. Tôi vẫn cần phải làm tho tính toán vào ngày lễ.
Léo Léopold Hertz

1
Một bình luận không hữu ích xin lỗi. Bạn có thể để máy tính ở nhà để bạn có thể SSH và chạy chúng ở nhà / uni không?
Anake

@Anake Không thể, xin lỗi, vào lúc này. Ngoài ra, Matlab ở đây vì vậy cần tính toán cục bộ. Ngoài ra, không có đủ chìa khóa để làm điều đó vào lúc này.
Léo Léopold Hertz

MATLAB có gì đặc biệt trong bối cảnh này? Đây không phải là một bản sao của Làm thế nào để tăng không gian hoán đổi?
Steeldo

Câu trả lời:


2

OK, khá nhiều danh sách bạn có ở đó. Hãy để tôi trả lời nội tuyến

  1. Làm thế nào để áp dụng xử lý lỗi tốt hơn cho bẫy lỗi ở đây? Xem kịch bản của tôi cho ví dụ trong nguồn. Chủ đề Cách thực hiện Bẫy lỗi và Hoán đổi nếu Lỗi / Cảnh báo?.

Tôi không thích khái niệm về kịch bản này cả. Rằng bạn có một ổ cứng ngoài mà bạn đang cố sử dụng làm trao đổi chỉ là một ý tưởng tồi. Nếu bạn thực sự có ý định làm điều này một cách thường xuyên thì hãy thay đổi kích thước các phân vùng của bạn để đặt một phân vùng trao đổi thích hợp vào, thêm một tệp hoán đổi hoặc chỉ mua một đĩa nội bộ lớn hơn.

  1. Làm cách nào để đặt cảnh báo nếu kích thước ma trận vượt quá kích thước trao đổi?

Chỉ cần làm toán. Nếu bạn biết kích thước của ma trận trước khi chương trình bắt đầu thì hãy tính kích thước trong MiB và so sánh nó với trao đổi có sẵn.

  1. Làm thế nào để có một thanh tiến trình trong việc tính toán ma trận khổng lồ của bạn trong Matlab?

MATLAB có API phải không? Tôi không nghĩ rằng đây là diễn đàn phù hợp cho câu hỏi đó. Ngay cả khi bạn đã có API, bạn sẽ chặn IO thông qua trao đổi để nó chỉ là một thanh tiến trình giật cục không thực sự phản ánh đúng thực tế.

  1. Làm thế nào để tiêu diệt tiến trình bận rộn và / hoặc hoán đổi -s / hoán đổi trong lần lặp (2)?

Bạn không. chỉ vì bạn đã hoàn thành việc tính toán không có nghĩa là hệ điều hành được thực hiện với các tài nguyên bạn đã phân bổ. Khi viết xong để trao đổi, nó sẽ giải phóng. Bạn đã tiêu thụ quá nhiều bộ nhớ đến nỗi nhiều ứng dụng không thể có được bộ nhớ mà họ cần để họ cũng sử dụng trao đổi. Chỉ cần để nó trên và để cho hệ điều hành làm điều đó. Trước khi bạn thực hiện lần chạy tiếp theo, hãy xóa bộ nhớ cache.

echo 3 > /proc/sys/vm/drop_caches 

Có lẽ còn nhiều hơn thế, tôi không phải là chuyên gia về máy ảo Linux. Sẽ rất đáng để nghiên cứu cách phân bổ SLAB / SLUB hoạt động và cách điều chỉnh nó cho các yêu cầu bộ nhớ lớn của bạn. Bạn có thể MLOCK matlab vào bộ nhớ. Điều đó buộc HĐH phải dự trữ bộ nhớ cho bạn, hoặc nó không khởi động, bạn cũng phải mở khóa khi hoàn thành. Tôi có thể làm điều này với API C tốt nhưng tôi không chắc bạn sẽ làm thế nào ngoài quy trình tôi không thể biên dịch lại, điều đó sẽ cần một số nghiên cứu.

Cuối cùng, đây là loại công cụ EC2 được tạo ra. Có vẻ như 16G là những gì bạn cần, một chiếc m4.4xlund có 64G ram @ $ 0,958 mỗi giờ. Đó là ít hơn một tách cà phê. Kịch bản cài đặt matlab của bạn bằng cách sử dụng bùa juju hoặc tương tự và biến toàn bộ thành một tính toán như một dịch vụ.

Là 16G 16 GB?

  • Có, thông thường khi chúng ta bỏ đi hậu tố, chúng ta có nghĩa là số cơ sở 2 theo đơn vị byte. Nếu bạn muốn súc tích, bạn sẽ viết 16GiB.

"Tôi cần ma trận> 100 GB. Tôi không biết liệu bạn có thể làm điều đó với EC2 không."

Bạn có nên xóa bộ nhớ cache của bạn bằng cách echo 3 > /proc/sys/vm/drop_caches?

  • Vâng, nó không đau khi luôn luôn làm điều đó. Xem Tài liệu / sysctl / vm.txt trong nhân linux.

Làm thế nào bạn có thể MLOCK Matlab vào bộ nhớ?

  • man mlock. Mặc dù tôi đã ngớ ngẩn khi tôi trích dẫn điều đó. Cuộc gọi này đảm bảo rằng bạn có thể phân bổ tất cả bộ nhớ bạn muốn và không bị tráo đổi, nó sẽ không bao giờ sử dụng bộ nhớ ảo. Đó không phải là những gì bạn muốn.

Tôi nghĩ bạn có thể liên kết API C với Matlab. - - Bạn có ý tưởng tắt trao đổi nếu có bất kỳ thất bại nào trong quy trình không?

  • Tôi sẽ thẳng thắn ở đây, khái niệm về các tập tin hoán đổi vi mô theo cách bạn đề xuất là vô lý. Công việc của hệ điều hành là quản lý tài nguyên và phân phát chúng một cách công bằng và nhất quán. Khi bạn cung cấp cho nó nhiều tài nguyên hơn, nó sẽ sử dụng chúng khi thấy phù hợp. Bạn không được nói điều đó khi bạn hoàn thành và lấy tài nguyên từ bên dưới nó, HĐH sẽ cho bạn biết khi nào nó hoàn thành.

Khi tôi hỏi HĐH về không gian địa chỉ bộ nhớ, đôi khi không phải lúc nào nó cũng thành công, điều đó không có nghĩa là tôi không thể thử lại. Matlab đó không thể tìm ra để gọi malloc hai lần là vấn đề của MATLAB.

Vì vậy, để ảnh hưởng đến thay đổi bạn muốn, nếu 100G dung lượng đó thực sự ở mức cao thì bạn cần tìm ra cách bảo hệ điều hành cắt bớt dấu chân bộ nhớ (bằng cách xóa bộ nhớ cache cho người mới bắt đầu) để trình quản lý bộ nhớ không cảm thấy cần phải sử dụng không gian trao đổi bổ sung mà nó đã được cung cấp. Sau đó và chỉ sau đó bạn có thể yêu cầu trình quản lý bộ nhớ phát hành tệp hoán đổi.

Thật dễ dàng để phát triển những thứ như bộ nhớ và đĩa, rất khó để thu nhỏ chúng. Thu hẹp buộc phải cân bằng lại mọi người dùng có tài nguyên được phân bổ trong không gian đó. Thay vào đó, nếu tôi nói "Tôi có một mảng lưu trữ 100TB nhưng bây giờ tôi chỉ cần 60TB, tại sao khi tôi gỡ bỏ 40TB đĩa mà mảng đó ngừng hoạt động?" Vâng, câu trả lời sẽ là rõ ràng phải không?

Vì vậy, đây là lựa chọn của bạn như tôi thấy nó.

  1. điều tra API C MATLAB để xem liệu bạn có thể kiểm soát tốt hơn cách phân bổ bộ nhớ cho các bộ công việc khổng lồ này không.

  2. tái cấu trúc tính toán của bạn để tính toán những gì bạn có bây giờ bằng cách sử dụng ma trận con hoặc một số biểu diễn dữ liệu thưa thớt khác.

  3. viết chương trình của riêng bạn bằng C / C ++ bằng cách sử dụng rất nhiều thư viện đại số tuyến tính ngoài kia để thực hiện tính toán và sử dụng mallochoặc mmapẩn danh để phân bổ không gian địa chỉ bạn cần.


Có, nhưng nó có thể không đủ và bạn có thể phải chờ đợi và thử lại trước khi nó thành công, nếu nó đã từng xảy ra.
ppetraki

1
heh, phần còn lại của bình luận của bạn đã không xuất hiện trong điện thoại thông minh của tôi. thay vào đó, bạn không thể lặp lại như thế. echo 3 | sudo tee /proc/sys/vm/drop_caches
ppetraki

Tôi chấp nhận câu trả lời này vì nó có ý nghĩa đúng trong câu trả lời của nó. Để chạy Client trong cùng một kịch bản như thiết lập môi trường hoàn toàn dễ bị lỗi. Thảo luận thêm về nó ở đây unix.stackexchange.com/a/298543/16920 - - Sẽ thật tuyệt nếu bạn có thể làm sạch cơ thể của mình một chút.
Léo Léopold Hertz

12

Bạn không thể dành trao đổi cho một phần mềm. Những gì bạn có thể làm là tạo một tập lệnh shell tạo ra một trao đổi, bắt đầu MATLAB và xóa trao đổi khi MATLAB thoát.

Đây là một kịch bản ví dụ tạo ra hoán đổi 10Mb trong thư mục / tmp, gắn kết nó, khởi động R (Tôi không có matlab), đợi R thoát, bỏ qua tệp hoán đổi và xóa nó.

Xin lưu ý rằng: - bạn sẽ có cảnh báo vì tệp hoán đổi không thuộc quyền sở hữu của root. Đó là bởi vì hệ thống sẽ sử dụng nếu cho bất kỳ phần mềm nào, có thể không phải do bạn chạy và bạn có thể đọc trên tệp này ... Tôi cho phép bạn sửa nó. - nếu bạn [ctrl] - [c] tập lệnh hoặc đăng xuất, v.v., trao đổi sẽ vẫn được gắn kết. Tôi cũng để bạn sửa nó.

#!/usr/bin/env bash

SWAP_FILE=/tmp/my_swap_file
SIZE_MB=10
TO_RUN="R"

dd if=/dev/zero of=${SWAP_FILE} bs=1M count=${SIZE_MB}
mkswap ${SWAP_FILE}
chmod 0600 ${SWAP_FILE}
sudo swapon -v ${SWAP_FILE}
echo "Swap enabled. Press enter to continue"; read
${TO_RUN}
echo "I will remove the swap. Press enter to continue"; read
sudo swapoff -v ${SWAP_FILE}
rm -vf ${SWAP_FILE}

1
Chà, nó không thực sự dành riêng cho MATLAB, nhưng đối với mọi tình huống cần thêm RAM tạm thời. Xin lưu ý rằng hoán đổi / hoán đổi cần quyền root (vì vậy: sudo)
Michael Hooreman

1
Đúng bạn có. Đó là cách để trở thành root.
Michael Hooreman

Câu trả lời tốt. Cá nhân tôi sẽ tiếp cận nó, và giữ kịch bản add-swap.sh của riêng tôi cho những khoảnh khắc đáng yêu này khi ký ức bị ăn
mòn

Tôi đã trao tiền thưởng ở đây vì nó làm cho tôi điều đúng. Tuy nhiên tôi không thể chấp nhận câu trả lời vì việc quản lý lỗi rất khó khăn và không đầy đủ. Tốt nhất là thiết lập trao đổi riêng biệt với chạy Matlab, vui lòng xem câu trả lời tại đây unix.stackexchange.com/a/298543/16920
Léo Léopold Hertz

1

Đây là cách bạn có thể mở rộng bộ nhớ SWAP bằng ổ cứng ngoài :

  • Đầu tiên, ghi lại bộ nhớ SWAP thực tế của bạn bằng cách chạy:

    free -m
    
  • Thứ hai, có trong tay thư mục ổ cứng của bạn. Nó sẽ là một cái gì đó như /media/myhdd.

  • Quyết định kích thước của SWAP thêm mà bạn muốn thêm. Hãy nói, X GB.
  • Tính số lượng byte đó là số lượng. Sử dụng GB, đây là: Y = X * 1024 ^ 3 , trong đó Y là kết quả tính toán của bạn.
  • Chọn kích thước khối của tệp (nó tính bằng byte). Hãy sử dụng mặc định tại đây: 4096 (Xem thêm về điều này tại đây ).
  • Tính số khối mà tập tin sẽ có: Z = Y / 4096
  • Tạo một tệp có kích thước X GB bằng lệnh sau trong thiết bị đầu cuối:

    dd if=/dev/zero of=/media/myhdd/swapfile bs=4096 count=Z
    
  • Tạo SWAP trong tệp bằng cách sử dụng:

    sudo mkswap /media/myhdd/swapfile -f
    
  • Cuối cùng, kích hoạt SWAP:

    sudo swapon -p 1000 /media/myhdd/swapfile
    

Bây giờ SWAP của bạn đã tăng lên. Kiểm tra lại vớifree -m


Chúng ta có thể thiết lập điều này trong một kịch bản không tương tác ( sudoquyền hạn cần thiết):

#!/bin/bash

### Inputs ###

swap_GB=$(expr 1) # Enter here size of the swap memory to create, in GB.
swap_bs=$(expr 4096) # Enter here block size, in bytes (must be a multiple of 8).
HDD_folder="/media/myhdd/" # Enter absolute path of HDD inside the brackets.

### Swap creation ###

swap_size=$(expr $swap_GB \* 1024 \* 1024 \* 1024 / $swap_bs)
dd if=/dev/zero of=${HDD_folder}"/swapfile" bs=$swap_bs count=$swap_size
mkswap ${HDD_folder}"/swapfile" -f
swapon -p 1000 ${HDD_folder}"/swapfile"

### EOF ###

PS: vui lòng tối ưu hóa / chính xác nếu có thể. Như đã nói, đó là kịch bản đầu tiên của tôi từ trước đến nay :)


Chà, trao đổi đã chậm, nhưng tôi không thể tưởng tượng được việc trao đổi trên ổ USB. Nó sẽ trở nên chậm chạp như địa ngục IMHO
Michael Hooreman 20/07/2016

Một kịch bản như một bản tóm tắt sẽ là tuyệt vời ở đây.
Léo Léopold Hertz

1
Tôi chưa bao giờ tạo ra một kịch bản, nhưng sẽ cho nó đi.

1

Tôi ít nhất sẽ kiểm tra RAM được nén (mô-đun hạt nhân zram, có sẵn như thế nào kể từ phiên bản kernel 3.14).

Theo hướng dẫn wiki archlinux

modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 4G > /sys/block/zram0/disksize
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0

Tôi đoán là RAM nén nên nhanh hơn I / O đĩa.

Để giữ thay đổi sau khi khởi động lại, hãy đặt các lệnh thời gian khởi động vào /etc/rc.localvà chạy sudo systemctl enable rc-local.service.


Tôi đã mở rộng câu trả lời cho chủ đề unix.stackexchange.com/q/297752/16920 về ảnh hưởng của zram đối với kích thước bộ nhớ và tốc độ phân trang. Tôi không thể tìm thấy bất kỳ ảnh hưởng nào đến kích thước bộ nhớ, có lẽ chủ yếu là về phân trang. Tuy nhiên, cảnh báo systemd / ... đã tăng lên với runit. Sẽ thật tuyệt khi biết về tỷ lệ lỗi của zram.
Léo Léopold Hertz

Trong trường hợp của zram0, có một số thống kê có sẵn trong / sys / block / zram0 trong các tệp orig_data_sizegồm_data_size . Tôi không có nhiều dữ liệu hoán đổi ở đó, nhưng với những gì có tỷ lệ là khoảng 0,35. Với tỷ lệ đó, 11 GB dữ liệu có thể phù hợp với 4 GB RAM. Điều đó có nghĩa là 7 GB dữ liệu không được hoán đổi vào đĩa.
JJ Hakala

1
Bạn có thể đặt các lệnh thời gian khởi động trong /etc/rc.local và sau đósudo systemctl enable rc-local.service
JJ Hakala

Tôi phát hiện ra rằng zramkhông thể áp dụng cho trao đổi trên ổ cứng / SSD nên zramkhông thể áp dụng ở đây, vui lòng xem chủ đề Askubfox.com/a/472227/25388
Léo Léopold Hertz

1

Sử dụng zswapnếu bạn có các phần trao đổi trên ổ cứng / SSD. Mô-đun Tho zramkhông có phần trao đổi trên ổ cứng / SSD, vì vậy câu trả lời của Hakala không được áp dụng. Xem chủ đề zram vs zswap vs zcache Hướng dẫn cuối cùng: khi nào nên sử dụng cái nào để giải thích. Thiết lập zswapnhư được mô tả trong chuỗi Cách kích hoạt Zswap thành công cho tính toán Matlab trong Ubuntu 16.04?

  • Thay thế dòng tương ứng bằng dòng sau trong /etc/default/grub

    # https://wiki.archlinux.org/index.php/Zswap
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1 zswap.max_pool_percent=25 zswap.compressor=lzo"
    
  • Chạy đi sudo update-grub.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.