Hoán đổi kích thước phân vùng trên máy tính RAM 64 GB cho công việc cần nhiều bộ nhớ


35

Tôi có RAM 64 GB và SSD 240 GB trên máy tính của mình, tôi sẽ sử dụng để tính toán chiếm nhiều bộ nhớ (học máy, khai thác dữ liệu, v.v.). Hầu hết các lời khuyên tôi tìm thấy trên Internet là khoảng 2-4-8 GB máy tính RAM và họ khuyến nghị kích thước gấp đôi phân vùng trao đổi RAM (vì vậy 128 GB).

Có hợp lý để tạo phân vùng trao đổi 128 GB không? Những lợi thế nào tôi có được bằng cách tạo một phân vùng trao đổi lớn?

Tôi có hiểu chính xác không, trong trường hợp tôi hết RAM vật lý:

  1. Nếu tôi không có trao đổi, tôi sẽ gặp lỗi 'hết bộ nhớ'
  2. Nếu tôi có trao đổi, một số trang RAM sẽ được sao chép sang phân vùng trao đổi và chương trình sẽ tiếp tục chạy (mặc dù chậm hơn).

Một số người nói rằng đó là một ý tưởng tồi để thực hiện trao đổi trên SSD, vì nó có số lượng chu kỳ đọc / ghi hạn chế. Sử dụng trao đổi nhanh như thế nào sẽ làm cạn kiệt chu kỳ đọc / ghi của SSD (theo như tôi biết, đó là khoảng 50000 IOPS ghi)?

Tôi đang sử dụng Linux ( Ubuntu 14.04 (Trusty Tahr)).

Bây giờ sẽ thiết lập một hoán đổi 16 GB, vì nó chắc chắn là đủ (ví dụ, RedHat gợi ý 4 GB) và dung lượng ổ đĩa 16 GB thực sự không phải là vấn đề lớn.


1
Thay vì dựa vào trao đổi một cách rõ ràng, nếu bạn biết kích thước của công việc được thiết lập trước hoặc sẵn sàng quản lý bộ nhớ cấp thấp hơn một chút, hãy cân nhắc sử dụng mmapđể phân bổ các trang thiết lập công việc của bạn. Sau đó, số lượng trao đổi của bạn sẽ chính xác là số tiền bạn cần cho quá trình của bạn.
fluffy

5
Lời khuyên khuyến nghị "gấp đôi số lượng RAM" có từ thời xưa, khi máy tính có ít RAM. Một số tài liệu nói rằng nó chủ yếu áp dụng cho các máy tính có RAM <2GB. Trên đó, kích thước trao đổi chủ yếu liên quan đến những gì bạn đang làm với máy.
John WH Smith

Xem thêm Lỗi Máy chủ này nếu bạn đang chạy Java (và có thể các ứng dụng khác), bạn muốn đảm bảo rằng bạn có đủ trao đổi cho chúng để tăng phân bổ bộ nhớ. Cá nhân tôi gắn bó với tiêu chuẩn RAM + 2 của RHEL cho phân vùng trao đổi của mình
warren

2
Thật xấu hổ khi hầu hết các ý kiến ​​ở đây đã bị xóa. Thêm vào: Thật đáng để đề cập, tình cờ, nếu kernel của bạn hỗ trợ nó, bạn có thể muốn gắn phân vùng trao đổi của mình với discardtrên SSD. Ngoài ra (và điều này đã được đề cập trong câu trả lời bên dưới), đừng quên bạn có thể sử dụng tệp thay vì phân vùng để quản lý dễ dàng hơn (và không có hiệu suất nào đạt được trên SSD do bị phân mảnh).
Jason C

1
Nếu bạn có một ứng dụng cần nhiều bộ nhớ, như học SVM, và bạn hết ram và bắt đầu hoán đổi, mọi thứ sẽ trở nên quá chậm chạp để phục hồi và động thái duy nhất có sẵn của bạn sẽ là rút phích cắm (điều đó xảy ra với tôi một thời gian) . Bạn có thể muốn quá trình của mình bị OOM giết nếu nó bắt đầu hoán đổi, để bạn ít nhất có thể thay đổi công cụ và bắt đầu lại. Có lẽ với các ổ SSD, nó không quá tệ. Tôi cũng sẽ kiểm tra cài đặt OOMK - điều đó xảy ra với tôi trên Ubuntu rằng đôi khi các quy trình đã bị OOM giết khi vẫn còn nhiều ram vì chúng được phân bổ mạnh mẽ
pqnet

Câu trả lời:


35

Bạn có thể chỉ cần một lượng nhỏ trao đổi. Khi bạn có đủ RAM cho bộ làm việc thông thường của máy tính, điều mà tôi khá chắc chắn là bạn làm, bạn chỉ cần trao đổi hai thứ:

  1. Bạn cần trao đổi để lấy thông tin có thể sẽ không bao giờ được truy cập ra khỏi RAM để giải phóng thêm dung lượng cho bộ đệm đĩa. Nhiều ứng dụng chạy khi khởi động hệ thống và sẽ không bao giờ được truy cập lại. Bạn không muốn bất kỳ trang nào họ bị bẩn trong RAM mãi mãi. Vì vậy, bạn cần trao đổi để giữ chúng.

  2. Bạn cần trao đổi để trang trải phân bổ sẽ không bao giờ được điền. Không gian này đơn giản là phải có sẵn, mặc dù nó sẽ không được sử dụng. Không có nó, hệ thống sẽ phải từ chối phân bổ bộ nhớ ngay cả khi có nhiều RAM vật lý miễn phí vì không đủ kho lưu trữ sao lưu để cho phép tất cả các phân bổ của nó được sử dụng cùng một lúc.

Cả hai điều này đều đòi hỏi một lượng lớn trao đổi. 16GB, ví dụ, là quá đủ. Mục đích là không cho phép bạn chạy các bộ làm việc lớn hơn với chi phí tốc độ. Mục đích là để cho phép bạn sử dụng 64GB một cách hiệu quả và không phải làm tắc nghẽn nó với rác hoặc dự trữ nó cho các trường hợp cạnh sẽ không bao giờ xảy ra.

(Tôi đồng ý với Bert rằng 4GB có khả năng là đủ.)


2
@wrwt Đặt phân vùng trao đổi của bạn ở cuối ổ đĩa (hoặc ít nhất là sau phân vùng dữ liệu của bạn), nó sẽ giúp thay đổi kích thước nhanh hơn và ít ghi hơn nếu bạn chọn điều chỉnh nó (cụ thể hơn là nó sẽ thay đổi kích thước phân vùng dữ liệu để phù hợp với nó đơn giản hơn, vì bạn không phải di chuyển bắt đầu). Không có liên kết giữa vị trí và hiệu suất trên SSD vì đôi khi có trên các ổ đĩa cơ.
Jason C

Mặc dù câu trả lời này có thể đủ cho hầu hết những người có sở thích, nhưng đó là lời khuyên tồi cho các máy chủ thực sự - câu trả lời phụ thuộc vào cách viết ứng dụng, bởi vì hết dung lượng trao đổi sẽ khiến kẻ giết người hết bộ nhớ khởi động và chấm dứt xử lý ngẫu nhiên (có bạn đọc đúng; "ngẫu nhiên")
Soren

3
@Soren Đây là superuser, không phải serverfault. ;) Chắc chắn đúng là việc thiết lập không gian hoán đổi không phải là quyết định duy nhất bạn cần thực hiện cho "máy chủ thực". Bạn cũng cần đưa ra quyết định về những thứ như overcommit, bạn có thể cần điều chỉnh kẻ giết người OOM, v.v. (Và câu trả lời nhận được nhiều phức tạp hơn nếu bạn mong đợi bạn làm việc thiết lập để vượt RAM vật lý Nhưng hầu như không ai hoạt động máy như vậy nữa..)
David Schwartz

5
Linux sẽ vượt quá bộ nhớ ngay cả khi không kích hoạt trao đổi. Nó sẽ xử lý OOMK khi sử dụng quá nhiều bộ nhớ. Vì vậy, điểm thứ hai của câu trả lời là sai.
Ruslan

1
@MaciejPiechotka Hoặc sử dụng tệp.
Jason C

29

RedHat khuyên dùng 4 GB trên máy có 64 GB .

Tuy nhiên, hoán đổi kích thước là một nghệ thuật hơn là một khoa học. Nó phụ thuộc vào máy đang được sử dụng để làm gì, dung lượng đĩa và bộ nhớ bạn có và các yếu tố khác. Hãy nhớ rằng, bạn luôn có thể thêm nhiều trao đổi sau này.

Sử dụng quy tắc bộ nhớ vật lý 2X đã lỗi thời với số lượng hệ thống bộ nhớ có trong những ngày này. Nhưng chạy với trao đổi bằng không được khuyến khích trừ khi bạn biết những gì bạn đang làm. Đề xuất 4 GB là một điểm khởi đầu tốt.


12
+1 cho đoạn cuối. Đề xuất 2x có từ khi hầu hết các máy tính không có đủ ram để tránh hoán đổi trong sử dụng bình thường. Theo chủ quan, từ việc sử dụng máy tính sau đó, giới hạn 2x dường như đã được chọn là một con số đủ lớn để máy tính trở nên chậm một cách bất thường trước khi hết trao đổi.
Dan Neely

1
2X cũng hoạt động tốt khi các hệ thống có RAM 4GB / 8GB và dung lượng ổ đĩa hàng trăm GB. Chắc chắn, nó có lẽ là nhiều hơn mức cần thiết, nhưng tác hại là gì? Nhưng giờ đây, các hệ thống có RAM 16 GB / 64 GB và SSD 128 GB / 256 GB, tác hại là rõ ràng.
David Schwartz

12

Trên Linux, bạn cần trao đổi đủ để tổng bộ nhớ ảo khả dụng (RAM + SWAP) đủ cho tất cả các quy trình bạn muốn chạy cùng một lúc và dấu chân ảo tối đa của chúng.

Nếu bạn có ít trao đổi hơn mức này hoặc hoàn toàn không có trao đổi, thì tình huống sau sẽ xảy ra: hệ thống hết bộ nhớ khi cố gắng phân bổ một trang. Tuy nhiên, đây vẫn là một lỗi mềm mặc dù không có trao đổi, vì hệ thống có rất nhiều trang "nạn nhân" có thể bị xóa để tạo khoảng trống: cụ thể là các trang của tất cả ánh xạ bộ nhớ được hỗ trợ tệp, chẳng hạn như tệp thực thi và thư viện chia sẻ!

Khi hệ thống của bạn đòi hỏi ngày càng nhiều không gian cho dữ liệu (không thể hoán đổi), nó sẽ ngày càng di tản mã thực thi (thư viện dùng chung và thực thi), dẫn đến việc đập dữ dội, vì bộ công việc được cắt thành một tập hợp chặt chẽ và chặt chẽ hơn trang.

Hoán đổi không gian làm dịu vấn đề này bằng cách cung cấp một vị trí cho các trang ẩn danh (không được ánh xạ tệp) được hoán đổi: các trang được sử dụng để phân bổ bộ nhớ, để mã thực thi có thể nằm trong bộ nhớ.

Mặc dù vậy, nếu bạn không thường xuyên chạy các tác vụ chiếm nhiều bộ nhớ, bạn có thể thoát khỏi việc chạy không cần trao đổi và cấu hình thủ công một tệp hoán đổi (thay vì phân vùng chuyên dụng) khi bạn cần. Để tạo một tệp hoán đổi nhanh chóng, hãy trở thành root và:

dd if=/dev/zero of=/path/to/swapfile size=$((1024 * 1024)) count=32768  # 32 Gb.
mkswap /path/to/swapfile
swapon /path/to/swapfile

Khi bạn không cần nó nữa:

swapoff /path/to/swapfile
rm /path/to/swapfile

Ghi chú:

  1. Bạn chắc chắn không cần phải cấu hình ít nhất là trao đổi nhiều như bạn có RAM. Quy tắc ngón tay cái này bắt nguồn từ các hệ điều hành nơi nó là một yêu cầu khó khăn do cách thức hoán đổi được thiết kế.

  2. Có nhiều cách để làm cho Linux thất bại nặng nề khi không có bộ nhớ, cụ thể là thông qua thao tác với các giá trị của các mục nhập sysctl này:

    vm.overcommit_memory
    vm.overcommit_ratio
    

2
+1 để thực sự tham chiếu đến các tham số cấu hình kernel - Chìa khóa nằm trong phần của câu hỏi If I have no swap, I get an 'out of memory' error- đó là false- sự thật là khi bạn hết dung lượng trao đổi, kẻ giết người hết bộ nhớ sẽ đá vào và giết một quá trình ngẫu nhiên để giải phóng không gian - vì vậy lượng không gian hoán đổi cần thiết phụ thuộc vào cách ứng dụng của bạn được viết.
Soren

@Soren Có khả năng hầu hết RAM sẽ chứa đầy dữ liệu thực tế, vì vậy, kẻ giết người hết bộ nhớ sẽ không tạo ra nhiều khác biệt. Thx cho 'sự thật' nào.
viết

3

Có nhiều cân nhắc hơn. Nếu bạn cần / muốn tạm ngừng hoạt động thì bạn cần ít nhất là kích thước của RAM và sau đó là một số. Tuy nhiên có vẻ như bạn không cần nó vì bạn dường như chủ yếu xây dựng một con ngựa làm việc tính toán.

Trong trường hợp này, vui lòng xem xét sử dụng tệp hoán đổi thay vì phân vùng. Bạn không cần phải lo lắng về việc định cỡ nhiều, loại bỏ hoặc thêm nó sau này không yêu cầu phân vùng lại. Không có hình phạt hiệu suất (đáng chú ý) bằng cách sử dụng một tệp trên một phân vùng. Nếu bạn đã từng cần nó, hãy xem kích thước và điều này cũng sẽ cho bạn gợi ý tốt.


1
@Kaz Tôi nghĩ bạn đang nói về một cái gì đó khác với kaste. Kaste đang nói rằng nếu bạn muốn có thể tạm dừng / ngủ đông máy tính của mình, hãy tắt nó và chọn nơi bạn rời đi sau đó, bạn cần có đủ dung lượng trao đổi để lưu trữ tất cả RAM của bạn (nếu không nó sẽ đi đâu?).
amalloy

@amalloy Nếu bạn lưu trữ RAM trong không gian trao đổi của mình, việc hoán đổi sẽ đi đâu (hãy nhớ rằng trao đổi được coi là bộ nhớ - nếu mất nó cũng giống như mất ram).
NPSF3000

2

Khối lượng công việc bạn muốn áp dụng cho máy cần một lượng bộ nhớ nhất định để chạy (nhớ thêm đủ vào phương trình để xử lý tải tối đa) và bạn cần cấu hình máy tính của mình để có ít nhất số đó.

Các hệ điều hành hiện đại cung cấp bộ nhớ ảo dưới dạng kết hợp giữa bộ nhớ vật lý và không gian hoán đổi, vì vậy nếu bạn cần nhiều bộ nhớ hơn máy có sẵn, bạn phải thêm đủ dung lượng trao đổi để lấp đầy khoảng trống. Tức là nếu bạn cần tối đa 80 GB và máy có 64 GB thì bạn cần trao đổi 16 GB.

Thông thường các trình cài đặt hệ điều hành yêu cầu bạn tạo một vùng trao đổi ban đầu (vì đây là cách đơn giản nhất và cho phép ngay cả các máy tính nhỏ để cài đặt), và người ta đã nhận thấy rằng một quy tắc tốt cho các hoạt động Unix điển hình là có kích thước bộ nhớ ảo ba lần bộ nhớ vật lý, vì vậy điều này thường được đề xuất. Tuy nhiên, bạn biết nhiều hơn về mô hình sử dụng để bạn có thể thay đổi điều này khi thích hợp.

Không có gì sai khi làm việc mà không có hoán đổi nếu áp lực bộ nhớ của bạn luôn ít hơn. Linux sẽ sử dụng trong suốt mọi bộ nhớ không sử dụng làm bộ đệm đĩa.


2

Một ý tưởng tốt hơn nhiều so với việc "trao đổi nhiều" là (sắp xếp lại) tổ chức công việc của bạn sao cho các bộ công việc phù hợp với bộ nhớ, sau đó sử dụng hệ thống tệp để lưu trữ và truy xuất công việc bạn làm. Tức là, thay vì buộc HĐH phải đoán các kiểu sử dụng bộ nhớ của bạn, hãy sử dụng những gì bạn biết về các vấn đề của mình để kiểm soát các kiểu sử dụng bộ nhớ của bạn.

Như một ví dụ ngẫu nhiên có liên quan ngay lập tức với tôi vào mùa hè này ... Khi thực hiện sàng bậc hai, người ta cần một mảng lớn (rõ ràng) để đánh dấu (với một số thuật toán phức tạp có chi tiết thực sự không quan trọng đối với ví dụ này). Mảng cần phải có ~ 100 mục nhập Giga, thật dễ dàng trong phạm vi 1 TB. Tôi có thể giả vờ phân bổ điều đó và để HĐH thực hiện một số lần hoán đổi không hiệu quả đáng kinh ngạc để đưa các trang vào và ra khỏi RAM để hỗ trợ tất cả các lần ghi tuần tự qua mảng. Thay vì làm một cái gì đó xương xẩu, tôi đã sắp xếp để phân bổ một mảng nhỏ hơn nhiều, chính xác phù hợp với bộ nhớ và sau đó sử dụng lại mảng nhỏ đó để lặp đi lặp lại phần còn lại của mảng lớn trong các lát. Tôi cũng đã tước bỏ HĐH, tước bộ dịch vụ đang chạy, thay thế vỏ,

SSD có thể nhanh, nhưng nó gần như không nhanh bằng việc tổ chức tính toán của bạn để thực hiện cùng một bộ hoạt động mà không bao giờ bị đình trệ để trao đổi.


1

Như những người khác đã đề cập, phân vùng trao đổi là một ý tưởng tốt ngay cả khi bạn có nhiều RAM. Không nên đặt nó trên ổ SSD; việc ghi thường xuyên của một phân vùng trao đổi cuối cùng sẽ làm hao mòn ổ đĩa của bạn.

Nếu bạn có cổng USB 3.0 dự phòng, tôi khuyên bạn nên sử dụng ổ flash cho không gian trao đổi của mình. Có rất nhiều ổ đĩa flash tốc độ cao nhanh như SSD của bạn, nhưng rẻ hơn nhiều - đủ rẻ để thay thế nếu nó bắt đầu bị lỗi. Một tìm kiếm nhanh trên Amazon cho thấy có rất nhiều ổ flash USB 3.0 16 GB giá dưới 20 đô la, và thậm chí một số ổ 64 GB dưới 60 đô la.

Phân vùng toàn bộ ổ đĩa flash thành không gian hoán đổi và bạn sẽ có không gian hoán đổi nếu bạn cần và yên tâm khi biết rằng bộ nhớ được ghi lại nhiều lần có thể dễ dàng thay thế (và rẻ tiền).


3
+1 khi không trao đổi với SSD, -1 để hoán đổi thành phần có tuổi thọ rất ngắn khi được sử dụng như vậy.
Aviator45003

1
@TC đã đúng, ArmanX - nếu bạn đang cố gắng tránh sử dụng flash (SSD), tại sao bạn lại sử dụng flash trên USB? Điều đó thật phi lý.
warren

2
@TC: Không sử dụng SSD để trao đổi vì làm hao mòn phương tiện là một huyền thoại đô thị không chính đáng. Trao đổi không xảy ra "mọi lúc", nhưng hiếm khi. Ngoài ra, đây là điều đã được nghiên cứu rộng rãi tại Microsoft sau khi phát hành Win7 với kết quả là các kiểu truy cập hoán đổi điển hình hoàn toàn chấp nhận được đối với SSD (đó là Windows, không phải Ubuntu, nhưng có khả năng Linux không hoạt động kém hơn nhiều). Bạn có hoạt động ghi gấp trăm (hoặc nghìn) lần so với ổ SSD do các tệp nhật ký ngớ ngẩn mà không ai từng đọc (thường là đồng bộ hóa mọi dòng).
Damon

Logic là thiếu sót: nếu ngón tay cái thực sự nhanh như SSD, tại sao nó rẻ hơn?
Đặc vụ_L

Đó là một sự cân bằng. Một mặt, đó là một ý tưởng tốt để có một tập tin trao đổi. Mặt khác, nếu một tệp hoán đổi làm hao mòn ổ SSD (điều này, bạn nói đúng, có lẽ nó không thành vấn đề), tốt hơn là sử dụng một sự thay thế giá rẻ - và một ổ đĩa flash với giá 20 đô la tốt hơn nhiều một ổ SSD hơn 100 đô la.
ArmanX

1

Bạn sẽ ổn ngay cả với 1GiB (và có thể ít hơn) trao đổi. Máy tính làm việc của tôi thường sử dụng không quá 140-150 MiB. Một gigabyte là rất nhiều cung cấp quá mức cho điều đó.
Trừ khi bạn thực hiện các tác vụ yêu cầu bộ dữ liệu trong hàng trăm gigabyte (dữ liệu này rất quan trọng!) Được truy cập theo kiểu truy cập nhiều hơn hoặc ít hơn một lần, bạn sẽ không bao giờ muốn có một trao đổi lớn hơn thế. Nhưng một lần nữa, chỉ cần ánh xạ bộ nhớ một tệp dữ liệu hoạt động tốt như nhau cho ứng dụng đó.

Nhưng trao đổi nhiều hơn giúp nhiều hơn, phải không? Nhiều hơn bất cứ điều gì luôn luôn tốt hơn!

Xem xét sự khác biệt của một hoán đổi, giả sử, 16GiB sẽ tạo ra (hoặc nghĩ về 64GiB). Nếu bạn không bao giờ sử dụng 16GiB này, bạn cũng có thể không đặt chúng sang một bên ngay từ đầu. Nhưng nếu bạn sử dụng chúng, điều gì xảy ra? Đĩa, so với bộ nhớ chính, cực kỳ chậm. Ngay cả với SSD SATA-600, việc chuyển 16GiB mất từ ​​30 đến 40 giây và dài gấp 2-4 lần đối với một số cấu hình khác.
Bây giờ chắc chắn ai đó sẽ phản đối rằng bạn đang phân trang vào và ra hàng tá trang 4kiB, chứ không phải 16GiB trong một lần. Trong khi đó là sự thật, tuy nhiên quan điểm vẫn đứng. Nếu bạn chỉ cần trao đổi trong và ngoài một vài trang, bạn không cần trao đổi 16GiB, nhưng nếu bạn cần 16GiB trao đổi, thì bạn cũng sẽ chuyển chúng (bằng cách này hay cách khác).

Về lý thuyết, 99,9% tất cả người dùng thậm chí có thể sử dụng máy 64GiB (hoặc bất kỳ máy 8+ GiB nào) mà không có bất kỳ trao đổi nào, và rất có thể không bao giờ nhận thấy thiếu thứ gì. Tuy nhiên, điều này là không nên.
Đầu tiên, nó là tối ưu phụ vì hệ điều hành có ít lựa chọn hơn trong những gì nó có thể loại bỏ khi hết bộ nhớ vật lý. Có hai điều có thể làm: Hoán đổi thứ gì đó không được sử dụng hoặc vứt bỏ các trang khỏi bộ đệm bộ đệm. Nếu bạn không có trao đổi, chỉ có một điều nó có thể làm. Vứt bỏ các trang từ bộ đệm bộ đệm là vô hại, nhưng nó có thể ảnh hưởng đáng kể đến hiệu suất.
Thứ hai, ánh xạ ẩn danh riêng có thể đơn giản thất bại nếu không có trao đổi. Điều đó thường không xảy ra, nhưng cuối cùng khi không có đủ bộ nhớ vật lý để đáp ứng tất cả và không có sự hoán đổi, hệ điều hành chỉ có lựa chọn này, ngoại trừ ...
Thứ ba, kẻ giết người OOM đáng sợ có thể đá vào Điều đó có nghĩa là một quá trình ngẫu nhiên ít nhiều sẽ bị giết. Không cám ơn. Đây không phải là điều bạn muốn có xảy ra.

Như đã nói, lời khuyên như bạn cần trao đổi gấp X lần lượng RAM được cài đặt đến từ những người lặp lại điều họ đã nghe (và không hiểu!) Từ người đã lặp lại điều họ đã nghe (và không hiểu!) Trong nhiều thập kỷ trước đây
Quy tắc "sử dụng 2 lần RAM của bạn" là một quy tắc dễ nhớ trong những năm 1980 và 1990, nó không bao giờ là "sự thật vàng" (chỉ là thứ hoạt động tốt với hầu hết người dùng) và hiện tại nó không áp dụng .

Bạn nên có một lượng trao đổi hợp lý mà bạn có thể dễ dàng chi trả (giả sử là một gigabyte), vì vậy HĐH có thể tạo ra một số thứ cũ, và vì thế thế giới sẽ không kết thúc ngay lập tức khi bạn yêu cầu thêm một chút bộ nhớ. Nhưng kia là nó.

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.