использование conky RAM - не показывает большой файл на RAM-диске (tmpfs)

Мой файл conkyrc содержит следующее:

${color grey}RAM Usage:$color $mem/ $memmax - $memperc% ${membar 4}

Здесь показаны числовые значения использования ОЗУ и столбец, например «1.01GiB/ 7.79GiB - 13% xx___________».

Я установил виртуальный диск и скопировал в него большой файл. df -h возвращает следующее:

tmpfs              3,0G    1,1G  2,0G  36% /mnt/ramdisk

Почему, с файлом 1,1G в ОЗУ, conky по-прежнему сообщает об использовании ОЗУ как 1,02Gib? Где хранится большой файл, если не в оперативной памяти?

0
задан 9 June 2015 в 05:15

2 ответа

Следующее обеспечивает информацию об использовании псевдодиска на быстрый взгляд, т.е. сколько памяти посвящает себя определенному электронному диску. Это может легко быть интегрировано в conkyrc:

mkdir -pv /mnt/ramdisk/.ramdisk

DF_RESULTS_FILE=/mnt/ramdisk/.ramdisk/df_ramdisk_results.txt
df -h | grep -e /mnt/ramdisk > $DF_RESULTS_FILE 

DF_RESULTS_STRING=$(cat $DF_RESULTS_FILE)
DF_RESULTS_details=($DF_RESULTS_STRING)

printf "RAM Disk Usage: %s /%s\n" ${DF_RESULTS_details[2]} ${DF_RESULTS_details[1]}

Следующее выполняет все мои потребности, как оно сообщает на самом деле относительно всех экземпляров a tmpfs смонтируйтесь:

#!/bin/bash
# rdu2.sh  -  ramdisk usage statusline statistics (version 2.2)

mkdir -pv /mnt/ramdisk/.ramdisk

# Change to /mnt/ramdisk for a specific drive
# or change it to something else or any other information
DF_MONITORED=tmpfs
DF_RESULTS_DIR=/mnt/ramdisk/.ramdisk
DF_RESULTS_FILE=$DF_RESULTS_DIR/rdu2.2_generic_results.txt

#the following lines are for people who haven't thought about doing "ps -A | grep rdu2"
#SCRIPT_PID=$(echo $$)
#printf "%d" $SCRIPT_PID > $DF_RESULTS_DIR/temp_script_pid.txt

printf "rdu2 executing to... [%s]\n" $DF_RESULTS_FILE 

printf "[%s]" $DF_RESULTS_FILE > $DF_RESULTS_FILE

while [ 1 ]
do
# Adding raw numbers and  translating to human-readable
# Display to screen and write to a file
    df | grep -e $DF_MONITORED > $DF_RESULTS_DIR/temp_df_tmpfs.tsv

    TOTAL_MEM_STRING=$(awk '{s+=$2} END {printf "%.0f", s}' $DF_RESULTS_DIR/temp_df_tmpfs.tsv  | awk 'function human(x) { s=" KiB MiB GiB TiB EiB PiB YiB ZiB"; while (x>=1024 && length(s)>1) { x/=1024; s=substr(s,5) }; s=substr(s,1,4); return sprintf( "%.2f%s", x, s) } { gsub(/^[0-9]+/, human($1)); print }')
    TOTAL_MEM_STRING_details=($TOTAL_MEM_STRING)
    USED_MEM_STRING=$(awk '{s+=$3} END {printf "%.0f", s}' $DF_RESULTS_DIR/temp_df_tmpfs.tsv  | awk 'function human(x) { s=" KiB MiB GiB TiB EiB PiB YiB ZiB"; while (x>=1024 && length(s)>1) { x/=1024; s=substr(s,5) }; s=substr(s,1,4); return sprintf( "%.2f%s", x, s) } { gsub(/^[0-9]+/, human($1)); print }')
    USED_MEM_STRING_details=($USED_MEM_STRING)

    printf "%8s%s%8s\r" "$USED_MEM_STRING" " /" "$TOTAL_MEM_STRING"
    printf "%8s%s%8s" "$USED_MEM_STRING" " /" "$TOTAL_MEM_STRING" > $DF_RESULTS_FILE

# Typical format for a conkyrc: 
# # ramdisk usage
# # NOTE: the ${tail logfile lines} is internal to conky; do not confuse with bash's tail command line program
# ${color grey}tpmfs Usage rdu2:$color ${tail /mnt/ramdisk/.ramdisk/rdu2.2_generic_results.txt 1}

    sleep 1.32s
done

Зашедший начальная загрузка и ссылаемый в носатом, последний сценарий способствует созданию следующего текста:

tmpfs Usage (rdu2): 96.14 MiB /3,42 GiB

Значения обновляют 'живой' при копировании большого файла в электронный диск.

0
ответ дан 9 June 2015 в 05:15

Наиболее вероятное объяснение является просто настолько носатым, не считает ту память как "используемую" память.

то, Что "используется" и что является "доступной" памятью, не является простым черным цветом и белым цветом в Linux или любой современной ОС. Например, системный кэш (включая кэш жесткого диска) "используется" в том смысле, что память выделяется ему, но "свободна" в том смысле, что это только поднимает в других отношениях доступную RAM и естественно уменьшится, поскольку меньше RAM становится доступным ему.

tmpfs является виртуальной файловой системой, которая ведет себя немного как системный кэш во многих отношениях, в котором ему отобразили файлы в RAM, поднимающей память, которая иначе была бы "свободна", кроме они не дубликаты файлов, которые также существуют на постоянной дисковой системе хранения. С tmpfs, если прекращает быть достаточно свободной RAM для хранения их в памяти, она выгрузит те файлы к разделу подкачки вместо этого.

Таким образом по той же причине имеет смысл иногда думать о кэш-памяти как свободной, в некотором отношении также имеет смысл думать о tmpfs памяти как свободной, потому что та память все еще доступна для использования другими приложениями.

0
ответ дан 9 June 2015 в 05:15

Другие вопросы по тегам:

Похожие вопросы: