Обычно я не использую терминал для конверсий аудио / видео. Я думаю, это одна из областей, где мне нравится придерживаться графического интерфейса.
Существует приложение Windows под названием Format Factory, и оно хорошо работает в WINE. После его установки в левой части окна есть все параметры преобразования. Я думаю, что это довольно понятно. Я надеюсь, что это работает!
Это произошло для меня в новой установке Ubuntu 14.04.
В моем случае это не имело ничего общего с упомянутыми проблемами sysctl.
Вместо этого проблема заключалась в том, что UUID раздела подкачки был другим во время установки, чем после установки. Таким образом, моя своп никогда не включалась, и моя машина блокировалась через несколько часов.
Решение состояло в том, чтобы проверить текущий UUID раздела подкачки на
sudo blkid
и затем sudo nano /etc/fstab, чтобы заменить значение UUID некорректного свопа с сообщением blkid.
Простая перезагрузка, чтобы повлиять на изменения, и voila.
Я знаю, что этот вопрос старый, но у меня была эта проблема в Ubuntu (Chrubuntu) 14.04 на Chromebook Acer C720. Я попробовал решение Krišjānis Nesenbergs, и он работал несколько, но все же иногда разбивался.
Наконец-то я нашел решение, которое работало при установке zram вместо использования физической замены на SSD. Чтобы установить его, я просто выполнил следующие инструкции:
sudo apt-get install zram-config
. После этого мне удалось настроить размер zram-обмена, изменив /etc/init/zram-config.conf в строке 21.
20: # Calculate the memory to user for zram (1/2 of ram)
21: mem=$(((totalmem / 2 / ${NRDEVICES}) * 1024))
Я заменил 2 на 1, чтобы размер zram был такого же размера, как и количество бара, которое у меня есть. С тех пор у меня не было больше зависаний или системной безответственности.
Я предполагаю, что вы установили свой vm.swappiness в очень низкое значение, что заставляет ядро сменять слишком поздно, оставляя слишком низкую оперативную память для работы системы.
Вы можете покажите текущую настройку swappiness, выполнив:
sysctl vm.swappiness
По умолчанию это значение равно 60. Ubuntu Wiki рекомендует установить значение 10, но не стесняйтесь устанавливать его на более высокое значение. Вы можете изменить его, выполнив:
sudo sysctl vm.swappiness=10
Это изменит его только на текущий сеанс, чтобы сделать его постоянным, вам нужно добавить vm.swappiness = 10 в файл /etc/sysctl.conf.
Если ваш диск медленный, подумайте о покупке нового.
Ничего не работало для меня !!
Итак, я написал сценарий для мониторинга использования памяти. Сначала попробуйте очистить кеш оперативной памяти, если потребление памяти увеличит порог. Вы можете настроить этот порог в скрипте. Если даже тогда потребление памяти не будет ниже порогового значения, оно начнет уничтожать процессы на единицу в порядке убывания объема памяти до тех пор, пока потребление памяти не будет ниже порогового значения. Я установил его по умолчанию 96%. Вы можете настроить его, изменив значение переменной RAM_USAGE_THRESHOLD в скрипте.
Я согласен с тем, что уничтожение процессов, которые потребляют высокую память, не является идеальным решением, но лучше убить ОДНОЕ приложение, а не потерять ВСЕ работу !! сценарий отправит вам уведомление на рабочем столе, если использование ОЗУ увеличит порог. Он также уведомит вас, если он убьет любой процесс.
#!/usr/bin/env python
import psutil, time
import tkinter as tk
from subprocess import Popen, PIPE
import tkinter
from tkinter import messagebox
root = tkinter.Tk()
root.withdraw()
RAM_USAGE_THRESHOLD = 96
MAX_NUM_PROCESS_KILL = 100
def main():
if psutil.virtual_memory().percent >= RAM_USAGE_THRESHOLD:
# Clear RAM cache
mem_warn = "Memory usage critical: {}%\nClearing RAM Cache".\
format(psutil.virtual_memory().percent)
print(mem_warn)
Popen("notify-send \"{}\"".format(mem_warn), shell=True)
print("Clearing RAM Cache")
print(Popen('echo 1 > /proc/sys/vm/drop_caches',
stdout=PIPE, stderr=PIPE,
shell=True).communicate())
post_cache_mssg = "Memory usage after clearing RAM cache: {}%".format(
psutil.virtual_memory().percent)
Popen("notify-send \"{}\"".format(post_cache_mssg), shell=True)
print(post_cache_mssg)
if psutil.virtual_memory().percent < RAM_USAGE_THRESHOLD:
print("Clearing RAM cache saved the day")
return
# Kill top C{MAX_NUM_PROCESS_KILL} highest memory consuming processes.
ps_killed_notify = ""
for i, ps in enumerate(sorted(psutil.process_iter(),
key=lambda x: x.memory_percent(),
reverse=True)):
# Do not kill root
if ps.pid == 1:
continue
elif (i > MAX_NUM_PROCESS_KILL) or \
(psutil.virtual_memory().percent < RAM_USAGE_THRESHOLD):
messagebox.showwarning('Killed proccess - save_hang',
ps_killed_notify)
Popen("notify-send \"{}\"".format(ps_killed_notify), shell=True)
return
else:
try:
ps_killed_mssg = "Killed {} {} ({}) which was consuming {" \
"} % memory (memory usage={})". \
format(i, ps.name(), ps.pid, ps.memory_percent(),
psutil.virtual_memory().percent)
ps.kill()
time.sleep(1)
ps_killed_mssg += "Current memory usage={}".\
format(psutil.virtual_memory().percent)
print(ps_killed_mssg)
ps_killed_notify += ps_killed_mssg + "\n"
except Exception as err:
print("Error while killing {}: {}".format(ps.pid, err))
else:
print("Memory usage = " + str(psutil.virtual_memory().percent))
root.update()
if __name__ == "__main__":
while True:
try:
main()
except Exception as err:
print(err)
time.sleep(1)
Сохраните код в файле say save_hang.py. Запустите скрипт как:
sudo python save_hang.py
Обратите внимание, что этот скрипт совместим только для Python 3 и требует установки пакета tkinter. вы можете установить его как:
sudo apt-get install python3-tk
Надеюсь, это поможет ...
Я запускаю один из своих ноутбуков с живого Ubuntu SD-карты постоянно, с небольшим разделом хранения ext4 и файлом подкачки на жестком диске. Когда используется почти вся оперативная память, и значение swappiness слишком низкое (иногда я предпочитаю полностью отключить жесткий диск, потому что это шумно), производительность Linux имеет тенденцию падать на скалу для меня, так что просто добраться до TTY1 для убийства Firefox занимает 15 минут.
Повышение /proc/sys/vm/vfs_cache_pressure от значения по умолчанию 100 до значения 6000, похоже, помогает предотвратить это. Однако документация ядра предостерегает от этого, говоря
Increasing vfs_cache_pressure significantly beyond 100 may have negative
performance impact. Reclaim code needs to take various locks to find freeable
directory and inode objects. With vfs_cache_pressure=1000, it will look for
ten times more freeable objects than there are.
Я не совсем уверен в побочных эффектах этого, поэтому я был бы осторожен в этом.