1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu mô hình Raspberry Pi Cluster

24 1,7K 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 1,53 MB

Nội dung

Siêu máy tính có cấu hình phần cứng mạnh mẽ để nghiên cứu khoa học,giải quyết các bài toán phức tạp nhanh hơn nhiều so với sử dụng máy để bàn,máy tính xách tay, nhưng chi phí đầu tư của

Trang 1

Trường Đại Học Công Nghệ Thông Tin

TIỂU LUẬN MÔN HỌC TÍNH TOÁN LƯỚI

Trang 2

MỤC LỤC



Trang 3

Chúng em xin chân thành cảm ơn Thầy PGS.TS Nguyễn Phi Khứ đã

truyền đạt những kiến thức quý báu từ những kinh nghiệm sống đến những vấn

đề khoa học mới nhất trong bộ môn Tính toán lưới

Trong bài tiểu luận này, em xin trình bày nội dung em đã tìm hiểu về thiết

bị Raspberry Pi, thư việc Message Passing Interface (MPI) và xây dựngRaspberry Pi Cluster để nghiên cứu và mô phỏng thuật toán tính số PI trênRaspberry Pi Cluster

Tuy đã có nhiều cố gắng nhưng do hạn chế về kiến thức, thời gian vànguồn tài liệu tham khảo nên các vấn đề nghiên cứu trong tiểu luận chắc chắncòn nhiều thiếu sót

Chân thành cám ơn!

Phạm Vĩnh Thành

SV: Phạm Vĩnh Thành Trang: 3

Trang 4

Siêu máy tính có cấu hình phần cứng mạnh mẽ để nghiên cứu khoa học,giải quyết các bài toán phức tạp nhanh hơn nhiều so với sử dụng máy để bàn,máy tính xách tay, nhưng chi phí đầu tư của siêu máy tính rất cao, đồng thời, chiphí vận hành, bảo trì cũng rất cao.

Tại các trường đại học, việc nghiên cứu khoa học luôn là tiêu chí hàngđầu và liên tục Ngân sách đầu tư và chi phí vận hành cho hệ thống siêu máy tính

để phục vụ cho việc nghiên cứu hạn hẹp, đồng thời, nếu hệ thống siêu máy tính

bị trục trặc, việc bảo trì cũng mất rất nhiều thời gian và chi phí

Như vậy, cần phải có giải pháp xây dựng một mô hình Siêu máy tínhvới chi phí đầu tư ban đầu, chi phí vận hành và chi phí bảo trì thấp để phục vụcho việc nghiên cứu được diễn ra liên tục và có thể được dùng để dự phòng cho

hệ thống Siêu máy tính hiện tại

Các máy tính MiniPC ngày càng nhỏ gọn, năng lượng tiêu thụ thấp, giáthành thấp và đáp ứng đủ nhu cầu sử dụng thông thường Thậm chí minipc cònđược trang bị những tính năng cao cấp hơn cả máy tính để bàn, máy tính xáchtay Vì vậy, minipc dần được thay thế dần máy tính để bàn, máy tính xách tay đểtiết kiệm điện năng, chi phí đầu tư, vận hàng, bảo trì

Vì những vấn đề trên, em quyết định tìm hiểu mô hình Raspberry Pi(một loại minipc) Cluster (RPICluster) để giành cho việc nghiên cứu, mô phỏng

Trang 5

các ứng dụng tính toán lưới Mô hình RPICluster đang được sử dụng rộng rãi tạitrường Đại học như University of Southampton, Boise State University và mộtvài trung tâm nghiên cứu như NVidian.

2 Giới thiệu đề tài

Với những vấn đề nêu ra ở trên, đề tài “Tìm hiểu mô hình Raspberry PiCluster” được em thực hiện với mục đích hỗ trợ cho việc xây dựng mô hình LABchi phí đầu tư thấp, tiết kiệm điện năng, chi phí bảo trì thấp giành cho việcnghiên cứu, mô phỏng tính toán lưới trên mô hình thực tế gồm nhiều Nút (node)

SV: Phạm Vĩnh Thành Trang: 5

Trang 6

Với chi phí dưới 2000 USD, hệ thống RPICluster có thể lên tới 33 node

và năng lượng tiêu thụ cho toàn hệ thống vào khoảng 167 Watt

II Mục tiêu của đề tài

Tóm tắt mục tiêu của đề tài:

- Tìm hiểu một số Supercomputer hàng đầu trong websitetop500.org

- Tìm hiểu thiết bị Raspberry Pi: cài đặt hệ điều hành, vận hành

- Tìm hiểu thư viện MPI (Message Passing Interface)

- Tìm hiểu mô hình RPiCluster của trường Đại học Boise State vàĐại học Southampton

Trang 7

Phần 2: CƠ SỞ LÝ THUYẾT

I Tìm hiểu thiết bị Raspberry Pi

Raspberry Pi – Chiếc máy tính mini bắt đầu được sản xuất bởi QuỹRaspberry Pi vào cách đây 1,5 năm, tháng 12/2011 Chiếc máy tính này chỉ cókích cỡ bằng một chiếc thẻ tín dụng với đầy đủ các kết nối và tuỳ dung lượngRAM mà người mua lựa chọn Trong một cuộc phỏng vấn mới đây, người đứngđầu của quỹ này là David Braben cho biết mặc dù có giá rẻ và kích cỡ nhỏ gọnnhưng máy tính của họ hoàn toàn có thể chơi những game như Quake III Arenahay chơi video độ phân giải Full-HD

Trong thời gian đầu, công ty sẽ chỉ cung cấp 10 ngàn máy cho các lậptrình viên, bắt đầu từ tháng tới, hầu hết là tại Anh quốc Raspberry Pi muốn cáclập trình viên viết phần mềm, game cho máy cũng như “port”1 từ các nền tảngkhác sang, để sau đó có thể sử dụng cho mục đích giáo dục Về cấu hình, máytính của Raspberry Pi sẽ sử dụng BXL 700Mhz, RAM 128MB hoặc 256MB, hỗtrợ thẻ SD và ngõ ra HDMI

Hiện nay Raspberry Pi có 2 phiên bản được bán, trong đó phiên bản B

là phiên bản được nhiều người mua nhất vì hỗ trợ đầy đủ các kết nối

1 Port: chuyển đổi phần mềm từ nền tảng hệ điều hành, phần cứng khác sang

SV: Phạm Vĩnh Thành Trang: 7

Trang 8

- Broadcom BCM2835 700MHz ARM1176JZFS processor withFPU and Videocore 4 GPU

- GPU provides Open GL ES 2.0, hardware-accelerated OpenVG,and 1080p30 H.264 high-profile decode

- GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs withtexture filtering and DMA infrastructure

- 512MB RAM

- Boots from SD card, running a version of Linux

- 10/100 BaseT Ethernet socketĐiều đặc biệt RPi rất nhỏ gọn và tiêu tốn điện cực thấp Bạn có thểchạy RPs chỉ với 2 viên pin tiểu hoặc một nguồn điện 5V Đây có lẽ là một giảipháp hợp lý cho nhu cầu online 24/24 mà không muốn tiêu tốn quá nhiều điệnnăng (Raspberrypi.vn, 12/2012, http://raspberrypi.vn/setup-raspberrypi/gioi-thieu-mini-pc-raspberry-pi-24.pi)

Raspberry Pi chạy hệ điều hành (HĐH) dựa trên nhân Linux Raspbian

là một phiên bản dựa trên Debian đã được tối ưu cho phần cứng của Pi là HĐHđược Quỹ Raspberry Pi đề nghị sử dụng

Dưới đây là các HĐH đã được Rasp Pi hỗ trợ hoặc đang được cộngđồng thử nghiệm:

Trang 9

II Tìm hiểu thư viện MPI

MPI viết tắt của Message Passing Interface, một dạng giao thức kết nốicủa máy tính, là một hệ thống truyền thông điệp được chuẩn hóa và portable2

được thiết kế bởi một nhóm nhà nghiên cứu từ các học viện và ngành côngnghiệp để hoạt động trên nhiều loại máy tính song song Tập MPI thi hành baogồm một thư viện các thủ tục sao cho có thể gọi được từ các chương trìnhFortran, C, C++ hay Ada Lợi thế của MPI so với các thư viện cũ là nó vừa thuậntiện (vì MPI thực thi cho hầu hết các kiến trúc bộ nhớ phân phối) vừa nhanh (vìmỗi thủ tục được tối ưu hóa cho phần cứng mà nó đang chạy)

MPI không phải là trình biên dịch, và cũng không phải là một sảnphẩm, nó là một đặc tả chuẩn cho thư viện chuyển thông điệp Nó được sử dụngcho các hệ thống PC Cluster, mạng hỗn tạp, được dùng để phát triển thư việnphần mềm song song, truy xuất phần cứng song song (Giới thiệu PC Cluster, ĐỗThanh Nghị, cit.ctu.edu.vn)

Mục tiêu của giao diện MPI chỉ đơn giản là phát triển một chuẩn được

sử dụng rộng rãi để viết các chương trình gửi thông điệp

- Thiết kế một giao diện lập trình ứng dụng (không nhất thiết phảicho các trình biên dịch hoặc một thư viện thực hiện hệ thống)

- Cho phép giao tiếp hiệu quả: Tránh sao chép từ bộ nhớ này đến

bộ nhớ khác, cho phép chồng chéo tính toán và thông tin liên lạc,

và giảm tải cho giao tiếp xử lý đồng thời, nếu có

2 portable: có thể được chuyển đổi từ một dạng hệ thống máy tính này sang hệ thống khác.

SV: Phạm Vĩnh Thành Trang: 9

Trang 10

- Cho phép triển khai thực trong những môi trường không đồngnhất.

- Cho phép kết hợp C và Fortran thuận lợi

- Đưa ra giao diện truyền thông tin cậy: người dùng không cầnphải sợ việc rớt kết nối Kết nối bị rớt này sẽ được thực hiện bởimột hệ thống phụ khác

- Định nghĩa giao diện có thể được thực hiện trên nền tảng củanhiều nhà cung cấp mà không có sự thay đổi đáng kể trong giaotiếp cơ bản và phần mềm hệ thống

- Ngữ nghĩa của giao diện nên là một ngôn ngữ độc lập

- Giao diện nên được thiết kế cho phép các tiểu trình an toàn.(MPI 3.0, MPI Forum, 2012, www.mpi-forum.org)

Trang 11

PHẦN 3: TÌM HIỂU MÔ HÌNH RASPBERRY PI CLUSTER

I Mô hình RPiCluster của ĐH Southampton

Nhóm nghiên cứu, dẫn đầu bởi Giáo sư Simon Cox, bao gồm RichardBoardman, Andy Everett, Steven Johnston, Gereon Khai Bình, Neil O'Brien,Mark Scott và Oz Parchment, cùng với con trai James Cox của giáo sư Cox (6tuổi) đã cung cấp hỗ trợ chuyên gia về sắp xếp Lego và thử nghiệm hệ thống

Giáo sư Cox nhận xét: "Ngay khi chúng tôi có thể đủ nguồn máy tínhRaspberry Pi chúng tôi muốn xem nếu nó đã có thể liên kết chúng lại với nhauthành một siêu máy tính Chúng ta cài đặt và xây dựng tất cả các phần mềm cầnthiết trên Pi bắt đầu từ một hình ảnh hệ thống Debian Wheezy tiêu chuẩn vàchúng tôi đã xuất bản một hướng dẫn để bạn có thể xây dựng siêu máy tính củariêng bạn."

Các kệ Rack được xây dựng bằng Lego với một thiết kế được phát triểnbởi Simon và James, người cũng đã được thử nghiệm Raspberry Pi bằng cách lậptrình nó sử dụng chương trình máy tính miễn phí phần mềm Python và Scratchtrong mùa hè 2012 Máy, có tên là "Iridis-Pi" sau khi Iridis siêu máy tính củatrường Đại học, chạy ra một ổ cắm điện 13 Amp duy nhất và sử dụng MPI đểgiao tiếp giữa các nút sử dụng Ethernet Chi phí toàn bộ hệ thống dưới £ 2,500(không bao gồm chuyển mạch) và có tổng cộng 64 bộ vi xử lý và 1TB bộ nhớ(thẻ SD 16Gb cho mỗi Raspberry Pi) Giáo sư Cox sử dụng các plug-in miễn phí'Python cụ cho Visual Studio để phát triển mã cho Raspberry Pi

Giáo sư Cox cho biết thêm: "Các thử nghiệm đầu tiên chúng tôi chạy

-và rõ ràng rằng chúng tôi tính toán Pi trên Raspberry Pi sử dụng MPI, đó là mộtthử nghiệm đầu tiên nổi tiếng cho bất kỳ siêu máy tính mới."

"Nhóm nghiên cứu muốn xem hệ thống chi phí thấp này như là mộtđiểm khởi đầu để truyền cảm hứng và giúp sinh viên áp dụng tính toán và xử lý

dữ liệu để giải quyết kỹ thuật phức tạp và thách thức khoa học như là một phầncủa các hoạt động đang tiếp cận cộng đồng của chúng tôi hiệu suất cao."

SV: Phạm Vĩnh Thành Trang: 11

Trang 12

James Cox nói: "Raspberry Pi rất thú vị và tuyệt vời mà tôi có thể giữ

nó trong tay của tôi và viết chương trình máy tính hoặc chơi trò chơi trên đó."

(Southampton engineers a Raspberry Pi Supercomputer, 2012,

http://www.southampton.ac.uk/mediacentre/features/raspberry_pi_supercomputer.shtml)

II Mô hình RPiCluster của ĐH Boise State

Joshua Kiepert, một sinh viên đang học Tiến sĩ tại khoa Điện tử và Máytính tại trường ĐH Boise State, đã tạo ra một siêu máy tính mini sử dụngRaspberry Pi với giá thấp hơn 2000 USD

Mặc định, CPU của Raspberry Pi chỉ chạy 700 Mhz, Project củaKiepert đã thực hiện overclock CPU lên tốc độ 1 Ghz

Bản thân các Raspberry Pi thú vị, nhưng có vẻ như không giống thànhphần siêu máy tính Nhưng, Kiepert đã có một vấn đề Ông đã làm nghiên cứutiến sĩ của ông về chia sẻ cho các mạng cảm biến không dây bằng cách mô phỏngcác mạng trên Linux hỗ trợ siêu máy tính Onyx Beowulf-cluster của trườngBoise State Theo tiêu chuẩn siêu máy tính, hiện có 32 nút, mỗi trong số đó cómột bộ xử lý E3-1225 3.1GHz Intel Xeon quad-core3 và 8GBs bộ nhớ RAM

3 Intel® Xeon® Processor E3-1225 (6M Cache, 3.10 GHz): 4 core x 4 thread

Trang 13

Một Beowulf-cluster chỉ đơn giản là một bộ sưu tập giá rẻ của COTS(Commercial Off The Shelf) máy tính nối mạng với nhau chạy Linux và phầnmềm xử lý song song Thiết kế đầu tiên của Don Becker và Thomas Sterling tạiTrung tâm Goddard Space Flight vào năm 1994, thiết kế này đã trở thành mộttrong những kiến trúc siêu máy tính cốt lõi.

Vì vậy, với một siêu máy tính kiểu Beowulf hoàn toàn tốt, tại saoKiepert bắt đầu để tạo Beowulf cluster riêng của mình?

- Đầu tiên, trong khi Onyx cluster có một đánh giá thời gian hoạtđộng tuyệt vời, nhưng nó có thể bị chết vì bất kỳ số lý do nào.Khi bạn có một dự án đòi hỏi việc sử dụng một nhóm như vậy vàOnyx là không có, không có sự lựa chọn khác trên khuôn viêntrường dành cho sinh viên ngoài việc chờ đợi cho nó trở nên cósẵn một lần nữa RPiCluster cung cấp một tùy chọn để tiếp tụcphát triển các dự án yêu cầu MIT [Thông báo Đi qua giao diện]hoặc Java trong môi trường cluster

- Thứ hai, RPis cung cấp một tính năng độc đáo ở chỗ chúng cógiao diện phần cứng cấp thấp bên ngoài cho các hệ thống nhúng

sử dụng, chẳng hạn như I2C, SPI, UART, và GPIO Điều này làrất hữu ích cho các kỹ sư điện yêu cầu thử nghiệm của phầncứng nhúng trên một quy mô lớn

- Thứ ba, có người dùng chỉ truy cập vào một nhóm là tốt nếucluster có tất cả các công cụ cần thiết được cài đặt Nếu khôngtuy nhiên, sau đó bạn phải làm việc với các quản trị viên cụm để

có được những thứ làm việc Như vậy, bằng cách xây dựngnhóm riêng của mình, ta có thể trang bị cho nó với bất cứ điều gì

mà ta có thể cần trực tiếp

- Cuối cùng, RPis có giá rẻ! Nền tảng RPi có phải là một trongnhững cách rẻ nhất để tạo ra một cụm 32 nút Chi phí cho mộtRPi với một thẻ 8GB SD là ~ $ 45 Để so sánh, mỗi nút trongcluster Onyx là một nơi nào đó giữa $ 1,000 và $ 1,500 Vì vậy,

SV: Phạm Vĩnh Thành Trang: 13

Trang 14

gần với giá của một nút trên máy tính, chúng ta có thể tạo ra mộtnút 32 Raspberry Pi cụm!

Trong một e-mail, Kiepert nói thêm: "Dự án này được bắt đầu bởi vì đã

có một tuần (nghỉ mùa xuân), trong đó tôi không thể sử dụng Beowulf clusterOnyx tôi đã sử dụng Onyx cluster giảm do một số đổi mới trên máy tính phòngthí nghiệm Điều đó đã làm tôi suy nghĩ, tôi cần phải tiếp tục kiểm tra công việchọc tiến sĩ của tôi, nhưng nếu tôi không có quyền truy cập vào Onyx tôi không cóbất kỳ tùy chọn nào khác

Trước đây, tôi đã dành rất nhiều thời gian làm việc trên RPis, và tôicũng đã được một thời gian dài người dùng Linux (Fedora và Mint chủ yếu).Ngoài ra, trong phòng thí nghiệm nghiên cứu nơi tôi làm việc, chúng tôi sử dụngRPis như máy chủ cho các hệ thống mạng cảm biến không dây tùy chỉnh xâydựng của chúng tôi, để tăng số liên kết dữ liệu cảm biến để cơ sở dữ liệu trungtâm của chúng tôi Vì vậy, dự án này đã cho tôi lấy kinh nghiệm trước đây củatôi với các cluster và RPis lên một tầm cao, và nó đã cho tôi một số lựa chọn đểtiếp tục công việc luận án của tôi Một điều chắc chắn là nó chắc chắn thêm mộtcái gì đó để những kinh nghiệm khi bạn có thể sử dụng một cluster bạn xâydựng."

Cho mình con-siêu máy tính, Kiepert chọn sử dụng Arch Linux Ônggiải thích, "Arch Linux có cách tiếp cận tối giản Những hình ảnh rất nhỏ tại ~150MB Nó khởi động trong khoảng 10 giây Những hình ảnh cài đặt không có

gì thêm bao gồm Các cài đặt mặc định cung cấp một xương sống, môi trường tốithiểu, mà nó khởi động một giao diện dòng lệnh (CLI) với hỗ trợ mạng Vẻ đẹpcủa phương pháp này là bạn có thể bắt đầu với, thiết lập nhanh nhất sạch và chỉthêm những điều bạn cần cho ứng dụng của bạn."

Tất nhiên, RPicluster của ông là không lý tưởng Kiepert thừa nhận,

"các đề xuất giá trị tổng thể là khá tốt, đặc biệt là nếu chương trình phát triểncụm tập trung vào xử lý phân tán chứ không phải là xử lý song song Đó là, nếucác chương trình đang được phát triển cho các nhóm được phân phối tự nhiên,

Trang 15

nhưng không dùng CPU quá nhiều Tính các ứng dụng chuyên sâu sẽ cần phảitìm ở nơi khác, như đơn giản là không đủ "sức ngựa" có sẵn để làm cho RPi làmột sự lựa chọn thực sự hữu ích cho cluster computing."

Trong cuộc trò chuyện e-mail, Kiepert nói thêm rằng, "Có lẽ vấn đề khóchịu nhất mà tôi có [với việc thiết lập các cluster] là lỗi của thẻ SD Ban đầu, tôi

đã có rất nhiều lỗi hệ thống tập tin khi tôi tắt nguồn các cluster (shutdown –hnow) và đã cố gắng để bắt đầu lại một lần nữa Điều này dường như là một vấn

đề được biết đến với các RPi mà bạn có nhiều khả năng kinh nghiệm khi bạn épxung Điều kỳ lạ là nó chỉ xảy ra trên các nút nô lệ (slave), không phải là chủ(master) [Các nút chủ là Samsung Chromebook Series 3 với một CPU ARMdual-core 1.7 GHz Cortex-A15.]

Cuối cùng, tôi thấy rằng nếu tôi bỏ NFS mount trước khi tắt nguồn, vấn

đề có vẻ được giảm Như là một phần của sự phát triển tôi tạo ra một script đểghi các ảnh (img) thẻ SD để khi ghi lại ảnh là cần thiết Tôi chỉ cần cung cấp tênmáy chủ và địa chỉ IP, và script hiện phần còn lại Điều này giúp đơn giản hoáviệc ghi lại ảnh, đặc biệt là lần đầu tiên tôi đã phải ghi tất cả 32 trong số chúngtrong khi đưa ảnh khởi tạo vào thẻ! "

Vào cuối ngày, Kiepert có siêu máy tính giá rẻ, làm việc được, mặc dùtrong đó vẫn còn sử dụng "băng điện để giữ người hâm mộ trên các thùng máy!"

Vì vậy, có câu hỏi: "Nó chạy nhanh như thế nào?"

Kiepert chạy High Performance Linpack (HPL), benchmark siêu máytính tiêu chuẩn trên máy tính của mình làm ở nhà và thấy rằng RPiCluster củamình với 32 Broadcom BCM2708 ARM11 bộ vi xử lý của nó là chạy bộ xử lý1GHz và bộ nhớ RAM 14.6GB có thể sử dụng lại hiệu năng cao nhất của HPL10.13 GFLOPS4 Đó không phải đi để có được cụm này vào danh sách Top500siêu máy tính, nhưng như Kiepert quan sát thấy, "tính Cray-2 siêu máy tính đầutiên vào năm 1985 đã làm 1,9 GFLOPS "

4 GFLOPS: Giga Flops: một tỷ FLOP (một tỷ phép tính mỗi giây)

SV: Phạm Vĩnh Thành Trang: 15

Ngày đăng: 09/04/2015, 16:16

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Joshua Kiepert, 22/May/2013, Creating a Raspberry Pi-Based Beowulf Cluster, Boise State University [pdf] Available at: <http://coen.boisestate.edu/ece/files/2013/05/Creating.a.Raspberry.Pi-Based.Beowulf.Cluster_v2.pdf &gt Sách, tạp chí
Tiêu đề: Creating a Raspberry Pi-Based Beowulf Cluster, Boise State University [pdf] Available at: <
[3] Prof. Simon Cox, 09/Jul/2013, Steps to make Raspberry Pi Supercomputer, University of Southampton [pdf] Available at: &lt;http://www.southampton.ac.uk/~sjc/raspberrypi/pi_supercomputer_southampton_web.pdf &gt Sách, tạp chí
Tiêu đề: Steps to make Raspberry Pi Supercomputer, University of Southampton [pdf] Available at: <
[4] Steven J. Vaughan-Nichols, 23/May/2013, Build your own supercomputer out of Raspberry Pi boards, Available at: &lt; http://www.zdnet.com/build- your-own-supercomputer-out-of-raspberry-pi-boards-7000015831/ &gt Sách, tạp chí
Tiêu đề: Build your own supercomputer out of Raspberry Pi boards
[8] Duy Luân, 24/May/2013, Tìm hiểu cơ bản về siêu máy tính, những cỗ máy phức tạp và mạnh mẽ, Available at: &lt; http://www.tinhte.vn/threads/tim-hieu-co-ban-ve-sieu-may-tinh-nhung-co-may-phuc-tap-va-manh-me.2106936/ &gt Sách, tạp chí
Tiêu đề: Tìm hiểu cơ bản về siêu máy tính, những cỗ máy phức tạp và mạnh mẽ
[5] Message Passing Interface, Wiki, Available at: &lt; http://en.wikipedia.org/wiki/Message_Passing_Interface &gt Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w