rosbag
내가 사용하는 기능ROS
. rosbag
다른 ROS 노드로부터 대량의 데이터를 기록할 수 있습니다. 전반적으로 200MB 파일과 같은 거대한 파일이 생성됩니다.
이러한 파일을 생성한 후 시스템의 버프/캐시가 많이 증가한 것을 발견했습니다. 이것은 내 캡처입니다.
rosbag
그 이후 에는 buff/cache
많이 증가한 동시에 free
19983년에서 10896년으로 감소한 것을 알 수 있다 .
내가 이해할 수없는. 내가 아는 한, free
이는 사용 가능한 RAM 크기, buff/cache
즉 캐시 크기를 나타냅니다. 캐시가 RAM 크기를 사용할 수 있는 이유는 무엇입니까? 그리고 생성된 파일을 삭제하면 17999에서 8925로 되돌아가는 것도 발견 rosbag
했습니다 buff/cache
. 이것이 시스템의 동작입니까? 언제 buff/cache
증가하나요? 언제 줄어들까요 buff/cache
?
답변1
In 의 출력 free
:
- "사용 가능"은 사용되지 않은 메모리를 의미합니다.
- "버프/캐시"는 버퍼(디스크에 쓰기를 기다리는 메모리의 데이터)와 캐시(메모리에서도 사용 가능한 디스크의 데이터)가 사용하는 메모리를 나타냅니다.
- "여유"는 프로세스가 스왑 없이 할당하고 사용할 수 있는 메모리의 양을 의미합니다(대부분의 경우 이 값에 주의해야 함).
프로세스가 대량의 데이터를 쓰면 데이터는 디스크에 기록되기 전에 버퍼로 이동합니다. 이러한 버퍼는 메모리 공간을 차지하므로 사용되지 않는 메모리 양이 줄어듭니다. 그러나 이 메모리는 사용 가능하게 될 수 있으므로 사용 가능한 메모리 양은 줄어들지 않습니다.
파일을 삭제하면 버퍼가 더 이상 필요하지 않으며 회수됩니다(캐시로 유지하는 것도 의미가 없습니다).
프로세스가 데이터를 쓰면 버퍼가 증가하고, 데이터가 디스크에 기록되면 버퍼는 감소합니다. 캐시는 디스크 데이터를 메모리에서 사용할 수 있게 되면(디스크에서 데이터를 읽거나 버퍼를 캐시로 변환하여) 증가하고 메모리 압박으로 인해 더 이상 유용하지 않게 되면 감소합니다. 둘 다 메모리에 존재하므로 해당 크기는 사용 가능한 메모리 양에 영향을 미치지만 둘 다 회수할 수 있으므로 크기는 사용 가능한 메모리 양에 영향을 미치지 않습니다.