Monday, June 27, 2016

SkypeHost.exe on Windows 10

Anyone who does not use Skype and who is looking through Task Manager may be frustrated to observe a task named SkypeHost.exe. While it may have "Suspended" status, some users would like to completely remove the task while not affecting Skype for other users on the PC.

SkypeHost.exe will restart if it is killed through "End task" in the Task Manager. The following instructions will remove the task, while allowing Skype to continue to function for other users of the PC.

The process is to open the Skype application and log in.  Then choose "Options" and uncheck "Start Skype which I start Windows" and "Sign me in when Skype starts".

 The process will end, and it will not restart the next time you log in.

Tuesday, June 07, 2016

Tuning I/O for Ethereum

At a high level, the I/O request goes from the running program to the operating system. Then from the operating system to the appropriate file system driver, then to the disk controller which writes to the disk.

It is usually important to match the I/O length (the amount of data being written) in each step of the process. Disks and the disk controllers typically write large stripes of data, such as 512KB. The file system may be set up with RAID, which can have stripes of 512KB or 1 MB. The operating system may default to a size of 16 KB (NTFS default has been 4 KB). To complicate this further, the operating system may implement file compression, which can pack more data into each I/O. And remember the filesystem may have logging, and may also frequently update inode access times which can cause contention.

It is typically difficult to change RAID settings after it has been implemented. RAID 5 will often be slow. It is typically impossible to change disk controller settings.

Therefore, let's concentrate on tuning a high I/O workload with commonly available settings in the filesystem and the program.

Increase the filesystem block size to a reasonably large value such as 64 KB. This is set when formatting a partition. While larger block sizes can lead to some wasted disk space, this is not typically a problem with modern large disks.

For tuning the program, if possible increase the program's (database or geth) cache size and match the logical I/O to the filesystem I/O size. For geth, it is possible to set the cache size with the --cache flag:
.\geth.exe --cache 512

The default geth cache is 16 MB, so 512 MB is a large increase. Set this lower than the amount of real RAM in the system, to avoid creating a swapping situation. Monitor this with Task Manager, using the following examples. Note 1.6 GB of real RAM is available to avoid swapping, which is a safe margin of error in case the program data increases.

Using the geth default of 16 MB, the maximum observed I/O was about 3 MB per second. Using geth's cache of 512 MB increased the maximum I/O to about 12 MB per second, a significant increase.

Wednesday, June 01, 2016

Move Microsoft Windows pagefile.sys

Moving the page file off the system disk can lead to reductions in disk I/O contention, which can lead to a quicker-feeling system. Systems which have small system disks can regain some disk space by moving the pagefile. These instructions for moving the pagefile to another disk are for Microsoft Windows 10.

Open a command prompt or Windows PowerShell.  To open PowerShell, press the Windows button and search for (start typing the words) "powershell". Click on PowerShell. (You may want to right-click and pin PowerShell for easy access in the future.)
With Windows PowerShell running, type> systeminfo
(PowerShell systeminfo displays the same information which is available through Control Panel, Administrative Tools, System Information.)
Note the "Windows Directory" and "Page File Location" are both on drive C.

This example computer is several years old, so drive C is relatively slow. The new drive is F, a three terabyte internal drive. The new drive has much better seek times and data throughput, so the system will likely feel more responsive if the pagefile is moved to drive F.

List the drives & volumes in powershell with > GET-WMIOBJECT win32_logicaldisk | format-table

Move the pagefile to the faster drive, F.

Show the virtual memory by opening Control Panel, System and Security, System, Advanced System Settings, Advanced tab, press Performance Settings... button, Advanced tab, press Change... button. Note the virtual memory is currently managed by the system and on drive C.

Create a pagefile on drive F with a Custom size by clicking on the new drive (F) and choosing Custom Size. Most users will choose a virtual memory size equal to real RAM or a multiple to the real RAM in the system. Press the Set button.
Select drive C and choose No Paging File and press the Set button. Press OK and the system will prompt for reboot. Reboot the system.

After reboot, verify the pagefile has moved correctly.

Using PowerShell to verify the pagefile, type > wmic pagefile list /format:list


Notice the PeakUsage is low, as it is a new pagefile.

Simpler PowerShell command, without formatting, is > wmic pagefile