рдпрд╣рд╛рдВ рдбреНрд░реЗрдЧрди рд░рд╣реЗрдВ: рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдореЗрдореЛрд░реА рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ [3/3] рд╣реИ



рд╕реВрдЪреА:

рдПрдХ

рджреЛ

рддреАрди



╬╝Torrent



рдпрд╣ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдордЬреЗрджрд╛рд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯ рдЙрдЪреНрдЪ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдХреЗ рд╕рд╛рде, рд▓реЗрдЦрдХ рдпрд╛ рддреЛ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкрдврд╝ рдирд╣реАрдВ рдкрд╛рдП рдпрд╛ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдПред рдпрд╣рд╛рдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:





рд╕реНрдЯреНрд░реАрдо 4600 рд╕рд┐рд╕реНрдЯрдо рдХреИрд╢ рдЕрдХреНрд╖рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдЦреБрд▓рддрд╛ рд╣реИред рдФрд░ рд╕рдм рдХреБрдЫ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдХрдо рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:





рдореИрдВ рдЯреЛрд░реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЕрдХреНрд╖рд╛рдВрд╢реЛрдВ рдореЗрдВ рдлрд╝реАрдб рдЪреИрдирд▓ рдмрд▓реНрдХрд┐ рд╕рдВрдХреАрд░реНрдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдореНрдпреВрдЯ-рдЯреЙрд░реЗрдВрдЯ рдХрд╛ "рдПрдореБрд▓реЗрдЯрд░" рд▓рд┐рдЦрдирд╛ рдерд╛ред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг" рдиреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдЪрд╛рдЯреБрдХрд╛рд░ рдкрд░ рд▓рд┐рдЦрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдХрд┐рд╕реА рдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛):

using System;
using System.IO;
using System.Threading;

namespace abuseio
{
    class Program
    {
        static void Main(string[] args)
        {
            for (var i = 0; i < 10; i++)
            {
                (new Thread(() => {
                    var file = File.OpenRead(args[0]);
                    var chunkSize = 16384;
                    var chunks = (int)(file.Length / chunkSize);
                    var rnd = new Random();
                    var buffer = new byte[chunkSize];
                    while (true) {
                        long index = rnd.Next(chunks);
                        file.Seek(index * chunkSize, SeekOrigin.Begin);
                        file.Read(buffer, 0, chunkSize);
                    }
                })).Start();
            }
        }
    }
}

      
      





( ). :



. :



( , ) Active , . Standby priority 7 :

, , shell32.dll:



┬л ┬╗:



, , . , - ┬л┬╗ , . , .



┬л┬╗ :

using System;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading;
using Microsoft.Win32.SafeHandles;

namespace abuseio
{
    class Program
    {
        [Flags]
        enum FileAttributes : uint
        {
            Readonly = 0x00000001,
            Hidden = 0x00000002,
            System = 0x00000004,
            Directory = 0x00000010,
            Archive = 0x00000020,
            Device = 0x00000040,
            Normal = 0x00000080,
            Temporary = 0x00000100,
            SparseFile = 0x00000200,
            ReparsePoint = 0x00000400,
            Compressed = 0x00000800,
            Offline = 0x00001000,
            NotContentIndexed = 0x00002000,
            Encrypted = 0x00004000,
            Write_Through = 0x80000000,
            Overlapped = 0x40000000,
            NoBuffering = 0x20000000,
            RandomAccess = 0x10000000,
            SequentialScan = 0x08000000,
            DeleteOnClose = 0x04000000,
            BackupSemantics = 0x02000000,
            PosixSemantics = 0x01000000,
            OpenReparsePoint = 0x00200000,
            OpenNoRecall = 0x00100000,
            FirstPipeInstance = 0x00080000
        }

        [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern SafeFileHandle CreateFile(
           string fileName,
           [MarshalAs(UnmanagedType.U4)] FileAccess fileAccess,
           [MarshalAs(UnmanagedType.U4)] FileShare fileShare,
           IntPtr securityAttributes,
           [MarshalAs(UnmanagedType.U4)] FileMode creationDisposition,
           [MarshalAs(UnmanagedType.U4)] FileAttributes flags,
           IntPtr template);

        static void Main(string[] args)
        {
            for (var i = 0; i < 10; i++)
            {
                (new Thread(() => {
                    var fileHandle = CreateFile(args[0], FileAccess.Read, FileShare.Read, IntPtr.Zero, FileMode.Open, FileAttributes.NoBuffering, IntPtr.Zero);
                    var file = new FileStream(fileHandle, FileAccess.Read);
                    var chunkSize = 16384;
                    var chunks = (int)(file.Length / chunkSize);
                    var rnd = new Random();
                    var buffer = new byte[chunkSize];
                    while (true) {
                        long index = rnd.Next(chunks);
                        file.Seek(index * chunkSize, SeekOrigin.Begin);
                        file.Read(buffer, 0, chunkSize);
                    }
                })).Start();
            }
        }
    }
}

      
      





┬л┬╗ (, ):

1. -

2. . тАФ

3.

4. Last but not least, . , ┬л┬╗ .



, . :

using System;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading;
using Microsoft.Win32.SafeHandles;

namespace abuseio
{
    class Program
    {
        [DllImport("kernel32.dll")]
        static extern IntPtr GetCurrentThread();

        enum ThreadPriority
        {
            THREAD_MODE_BACKGROUND_BEGIN = 0x00010000,
            THREAD_MODE_BACKGROUND_END = 0x00020000,
            THREAD_PRIORITY_ABOVE_NORMAL = 1,
            THREAD_PRIORITY_BELOW_NORMAL = -1,
            THREAD_PRIORITY_HIGHEST = 2,
            THREAD_PRIORITY_IDLE = -15,
            THREAD_PRIORITY_LOWEST = -2,
            THREAD_PRIORITY_NORMAL = 0,
            THREAD_PRIORITY_TIME_CRITICAL = 15
        }

        [DllImport("kernel32.dll")]
        static extern bool SetThreadPriority(IntPtr hThread, ThreadPriority nPriority);

        static void Main(string[] args)
        {
            for (var i = 0; i < 10; i++)
            {
                (new Thread(() => {
                    SetThreadPriority(GetCurrentThread(), ThreadPriority.THREAD_MODE_BACKGROUND_BEGIN);
                    var file = File.OpenRead(args[0]);
                    var chunkSize = 16384;
                    var chunks = (int)(file.Length / chunkSize);
                    var rnd = new Random();
                    var buffer = new byte[chunkSize];
                    while (true) {
                        long index = rnd.Next(chunks);
                        file.Seek(index * chunkSize, SeekOrigin.Begin);
                        file.Read(buffer, 0, chunkSize);
                    }
                })).Start();
            }
        }
    }
}
      
      







, , :



┬л┬╗ , :











, , . , 1-2-3.

1. :





2. :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utorrent.exe]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utorrent.exe\PerfOptions]
"IoPriority"=dword:00000000
"PagePriority"=dword:00000001


      
      







3.



:







.



swappiness


, ┬л ┬╗. (aging/trimming, ) тАФ . swappiness , low latency , swappiness :

Decrease /proc/sys/vm/swappiness?



Swapout is good. It frees up unused memory. I run my desktop machines at

swappiness=100.


. , , . , , .



тАФ .



.



All Articles