mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-07-10 23:42:46 -07:00
Add option to control qBittorrent process memory priority
This is to avoid Windows swapping out other application data from OS cache and put in torrent data which hinders other program responsiveness. The default value "Below normal" is choosen because casual users have other higher priority apps (such as browser) running and they don't expect OS to swap out its data. Dedicated seeders most probably will not have other app running on their system and would expect qbt has priority over other background services. The option only has effect on Windows >= 8.
This commit is contained in:
parent
c1e0207454
commit
0f60121b94
4 changed files with 137 additions and 0 deletions
|
@ -61,6 +61,9 @@ enum AdvSettingsRows
|
|||
{
|
||||
// qBittorrent section
|
||||
QBITTORRENT_HEADER,
|
||||
#if defined(Q_OS_WIN)
|
||||
OS_MEMORY_PRIORITY,
|
||||
#endif
|
||||
// network interface
|
||||
NETWORK_IFACE,
|
||||
//Optional network address
|
||||
|
@ -151,6 +154,28 @@ void AdvancedSettings::saveAdvancedSettings()
|
|||
Preferences *const pref = Preferences::instance();
|
||||
BitTorrent::Session *const session = BitTorrent::Session::instance();
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
BitTorrent::OSMemoryPriority prio = BitTorrent::OSMemoryPriority::Normal;
|
||||
switch (m_comboBoxOSMemoryPriority.currentIndex()) {
|
||||
case 0:
|
||||
default:
|
||||
prio = BitTorrent::OSMemoryPriority::Normal;
|
||||
break;
|
||||
case 1:
|
||||
prio = BitTorrent::OSMemoryPriority::BelowNormal;
|
||||
break;
|
||||
case 2:
|
||||
prio = BitTorrent::OSMemoryPriority::Medium;
|
||||
break;
|
||||
case 3:
|
||||
prio = BitTorrent::OSMemoryPriority::Low;
|
||||
break;
|
||||
case 4:
|
||||
prio = BitTorrent::OSMemoryPriority::VeryLow;
|
||||
break;
|
||||
}
|
||||
session->setOSMemoryPriority(prio);
|
||||
#endif
|
||||
// Async IO threads
|
||||
session->setAsyncIOThreads(m_spinBoxAsyncIOThreads.value());
|
||||
// File pool size
|
||||
|
@ -321,6 +346,33 @@ void AdvancedSettings::loadAdvancedSettings()
|
|||
addRow(LIBTORRENT_HEADER, QString("<b>%1</b>").arg(tr("libtorrent Section")), labelLibtorrentLink);
|
||||
static_cast<QLabel *>(cellWidget(LIBTORRENT_HEADER, PROPERTY))->setAlignment(Qt::AlignCenter | Qt::AlignVCenter);
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
m_comboBoxOSMemoryPriority.addItems({tr("Normal"), tr("Below normal"), tr("Medium"), tr("Low"), tr("Very low")});
|
||||
int OSMemoryPriorityIndex = 0;
|
||||
switch (session->getOSMemoryPriority()) {
|
||||
default:
|
||||
case BitTorrent::OSMemoryPriority::Normal:
|
||||
OSMemoryPriorityIndex = 0;
|
||||
break;
|
||||
case BitTorrent::OSMemoryPriority::BelowNormal:
|
||||
OSMemoryPriorityIndex = 1;
|
||||
break;
|
||||
case BitTorrent::OSMemoryPriority::Medium:
|
||||
OSMemoryPriorityIndex = 2;
|
||||
break;
|
||||
case BitTorrent::OSMemoryPriority::Low:
|
||||
OSMemoryPriorityIndex = 3;
|
||||
break;
|
||||
case BitTorrent::OSMemoryPriority::VeryLow:
|
||||
OSMemoryPriorityIndex = 4;
|
||||
break;
|
||||
}
|
||||
m_comboBoxOSMemoryPriority.setCurrentIndex(OSMemoryPriorityIndex);
|
||||
addRow(OS_MEMORY_PRIORITY, (tr("Process memory priority (Windows >= 8 only)")
|
||||
+ ' ' + makeLink("https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/ns-processthreadsapi-memory_priority_information", "(?)"))
|
||||
, &m_comboBoxOSMemoryPriority);
|
||||
#endif
|
||||
|
||||
// Async IO threads
|
||||
m_spinBoxAsyncIOThreads.setMinimum(1);
|
||||
m_spinBoxAsyncIOThreads.setMaximum(1024);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue