Tò mò, vì bạn đang chạy ứng dụng này, điều gì df -h /dev/shm
thể hiện mức độ sử dụng RAM của bạn?
tmpfs
Theo mặc định, nó thường được thiết lập với 50% dung lượng RAM mà hệ thống có. Điều này được ghi lại ở đây trên kernel.org, dưới tài liệu hệ thống tập tin cho tmpfs. Ngoài ra, nó được đề cập trong mount
trang người đàn ông.
trích từ trang người đàn ông gắn kết
Số lượng nút tối đa cho trường hợp này. Mặc định là một nửa số trang RAM vật lý của bạn hoặc (trên máy có highmem) số trang RAM lowmem, tùy theo số nào thấp hơn.
xác nhận
Trên máy tính xách tay của tôi có RAM 8GB, tôi có các thiết lập sau /dev/shm
:
$ df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 3.9G 4.4M 3.9G 1% /dev/shm
Chuyện gì đang xảy ra vậy?
Tôi nghĩ điều đang xảy ra là ngoài việc được phân bổ 50% RAM để bắt đầu, về cơ bản bạn đang tiêu thụ toàn bộ 50% theo thời gian và đang đẩy /dev/shm
không gian của bạn thành trao đổi, cùng với 50% RAM còn lại.
Lưu ý rằng một đặc điểm khác của tmpfs
vs. ramfs
là tmpfs
có thể được đẩy vào trao đổi nếu cần:
trích từ geek ware.com
Table: Comparison of ramfs and tmpfs
Experimentation Tmpfs Ramfs
--------------- ----- -----
Fill maximum space and continue writing Will display error Will continue writing
Fixed Size Yes No
Uses Swap Yes No
Volatile Storage Yes Yes
Vào cuối ngày, đó là một hệ thống tập tin được triển khai trong RAM, vì vậy tôi hy vọng nó sẽ hoạt động giống như cả hai. Điều tôi muốn nói là điều này là khi các tệp / thư mục bị xóa, bạn đang sử dụng một số trang bộ nhớ vật lý cho bảng inode và một số cho không gian thực tế được sử dụng bởi các tệp / thư mục này.
Thông thường, khi bạn sử dụng không gian trên ổ cứng, bạn thực sự không giải phóng không gian vật lý, chỉ có các mục trong bảng inode, nói rằng không gian được sử dụng bởi một tệp cụ thể hiện có sẵn.
Vì vậy, từ quan điểm của RAM, không gian được sử dụng bởi các tệp chỉ là các trang bẩn trong bộ nhớ. Vì vậy, nó sẽ mạnh mẽ trao đổi chúng ra theo thời gian.
Không rõ có tmpfs
làm gì đặc biệt để dọn sạch RAM thực tế được sử dụng bởi hệ thống tập tin mà nó cung cấp không. Tôi thấy đề cập đến trong một số diễn đàn mà mọi người thấy rằng phải mất tới 15 phút để hệ thống của họ "lấy lại" không gian cho các tệp mà họ đã xóa trong /dev/shm
.
Có lẽ bài báo này tôi đã tìm thấy trên tmpfs
tiêu đề: tmpfs: Hệ thống tệp bộ nhớ ảo sẽ làm sáng tỏ hơn về cách thức triển khai ở cấp thấp hơn và cách thức hoạt động của nó đối với VMM. Bài viết được viết riêng cho SunOS nhưng có thể có một số manh mối.
thử nghiệm
Các thử nghiệm giả định sau đây dường như cho thấy /dev/shm
có thể tự làm sạch.
Thí nghiệm 1
Tạo một thư mục với một tệp duy nhất bên trong nó, và sau đó xóa thư mục 1000 lần.
trạng thái ban đầu của /dev/shm
$ df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 3993744 5500 3988244 1% /dev/shm
điền vào nó với các tập tin
$ for i in `seq 1 1000`;do mkdir /dev/shm/sam; echo "$i" \
> /dev/shm/sam/file$i; rm -fr /dev/shm/sam;done
trạng thái cuối cùng của /dev/shm
$ df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 3993744 5528 3988216 1% /dev/shm
thí nghiệm # 2
Tạo một thư mục với một tệp 50 MB duy nhất bên trong nó, sau đó xóa thư mục 300 lần.
lấp đầy nó với 50MB tệp rác ngẫu nhiên
$ start_time=`date +%s`
$ for i in `seq 1 300`;do mkdir /dev/shm/sam; \
dd if=/dev/random of=/dev/shm/sam/file$i bs=52428800 count=1 > \
/dev/shm/sam/file$i.log; rm -fr /dev/shm/sam;done \
&& echo run time is $(expr `date +%s` - $start_time) s
...
8 bytes (8 B) copied, 0.247272 s, 0.0 kB/s
0+1 records in
0+1 records out
9 bytes (9 B) copied, 1.49836 s, 0.0 kB/s
run time is 213 s
trạng thái cuối cùng của /dev/shm
Một lần nữa, không có sự gia tăng đáng chú ý trong không gian tiêu thụ /dev/shm
.
$ df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 3993744 5500 3988244 1% /dev/shm
phần kết luận
Tôi không nhận thấy bất kỳ hiệu ứng rõ rệt nào khi thêm tệp và thư mục với /dev/shm
. Chạy nhiều lần ở trên dường như cũng không có tác dụng gì với nó. Vì vậy, tôi không thấy bất kỳ vấn đề nào với việc sử dụng /dev/shm
theo cách bạn đã mô tả.