Tôi sử dụng một ví dụ từ lý thuyết phần tử hữu hạn, nhưng bất kỳ ai duy trì cơ sở hạ tầng lớn và liên tục mở rộng nó sẽ tìm thấy một cái gì đó tương tự.
Giả sử tôi có một lưới các điểm và tam giác không cấu trúc, trong đó các điểm được cho bởi tọa độ (giả sử và y ) và các tam giác đều bao gồm ba chỉ số điểm (giả sử i , j và k ).
Như phổ biến trong FEM, lưới sẽ được tinh chế liên tiếp. Nếu chúng ta sử dụng sàng lọc thường xuyên toàn cầu, số lượng tam giác sẽ tăng theo hệ số với mỗi lần lặp của sàng lọc. Tùy thuộc vào cách thực hiện, bố cục bộ nhớ sẽ phát triển khác nhau.
Nói rằng lưới thỉnh thoảng có các ô nhớ từ 1 đến 300, bất cứ thứ gì ngoài đó đều miễn phí.
Ví dụ 1:
Chúng tôi phân bổ không gian cho lưới mới, các ô từ 301 đến 1501, điền vào dữ liệu của lưới tinh chế và quên đi lưới cũ. Lưới tinh chế tiếp theo sẽ được đặt trong các ô từ 1501 đến 6300, lưới tiếp theo trong 6301 đến 21500, v.v. Vị trí của lưới hiện tại sẽ di chuyển trong bộ nhớ "sang phải", trong khi một miếng vá lớn sẽ không được sử dụng. Chúng tôi có thể hết bộ nhớ sớm.
Người ta có thể quan sát trong ví dụ trên, rằng điều này sẽ chỉ cản trở chúng ta trong một lần sàng lọc, bởi vì ngay cả khi không có sự phân mảnh đó, chúng ta sẽ hết bộ nhớ một lần tinh chỉnh sau đó. Khi mảng đỉnh cũng được tính đến, vấn đề có thể trở nên nghiêm trọng hơn.
Làm thế nào điều này có thể được phá vỡ?
Ví dụ 2:
Tái định vị mảng tam giác cho các ô 1..1200. Tạo lưới mới trong các ô 1201 đến 2400. Sao chép nội dung của bản sao làm việc đó vào các ô 1..1200 và quên bản sao làm việc. Lặp lại tương tự.
Ok, chúng tôi vẫn hết bộ nhớ sớm, bởi vì chúng tôi cần một bản sao làm việc. Còn cái này thì sao:
Ví dụ 3:
Tái định vị mảng tam giác cho các ô 1..1500. Sao chép lưới cũ vào 1201 .. 1500. Tạo lưới mới trong các ô 1..1200. Sau đó quên bản sao của lưới cũ.
Trường hợp ở đây là nhân tạo, bởi vì người ta sẽ không sử dụng sàng lọc lưới toàn cầu trên các quy mô này. Nếu sự tăng trưởng nhỏ hơn nhiều, việc sắp xếp lại bộ nhớ là có thể để tránh sự phân mảnh. Tuy nhiên,
Câu hỏi:
Sự phân mảnh bộ nhớ có bao giờ trở nên quan trọng trong điện toán khoa học thực tế / tính toán hiệu năng cao không?
Nếu ở tất cả, làm thế nào để bạn tránh nó? Có thể mô hình máy của tôi thậm chí còn sai và hệ điều hành bằng một số phép thuật nặng nề sẽ sắp xếp lại bộ nhớ một cách ngầm định hoặc quản lý các khối bị phân mảnh trên đống.
Cụ thể hơn, nó ảnh hưởng đến quản lý lưới điện như thế nào?