Bitcoin Forum
April 27, 2024, 01:33:37 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: A utility to automatically adjust miner intensity on detection of activity  (Read 1683 times)
nous (OP)
Member
**
Offline Offline

Activity: 63
Merit: 10

Across the Universe


View Profile
January 29, 2014, 12:47:53 PM
 #1

Ok. Let's assume that some fearless dudes out there have plugged some Radeons into their colleagues' and secretaries' workstations. Let's also assume that those jail-defying dudes have forced their workmates to run some Linux flavour on those PCs (a long shot, but I know of at least one scumbag person who has).

Great. So far we have a mining rig running on free electricity, internet and OS, but those pesky colleagues keep bitching about how slow it is to switch tasks and their screens get messed up with artifacts and their Libreoffice Writer crashes and their shiny X session is insufferable and, and, and to no end.

The obvious solution is to set a cron job to stop cgminer at 08:00 and restart it at whenever the get-the-hell-outta-here hour is. But then, you've paid in preciousss gold for a GPU that's idling for hours between wordprocessors and spreadsheets and the very thought is killing you.

The next best solution is telling cron to just lower the intensity to 10-12 at 08:00 and reset it to 20 at get-the-hell-outta-here hour. Now, that's better.

But nooooooooooooo. Your hard-earned gold deserves even better. You demand a tool that detects when that sucker has stopped typing or touching the mouse, sets intensity to maximum and then waits until that sucker has hung up the phone and touched the mouse again. Then and only then it lowers intensity to levels undetectable.

Your demands have been met; this little tool squeezes the last MH/s out of your GPUs and turns it into profit. And keeps your workmates happy.

Code:
/*
Detect activity on X and act accordingly.
(c) nous at archlinux dot us
BTC: 1Ls3Ug9V2J83XLsg9EFXgLX7ebSwXc39ix

Compile with
gcc -L/usr/X11R6/lib/ -lX11 -lXext -lXss cgminer_watch_intensity.c -o cgminer_watch_intensity

Share and enjoy!
*/

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/scrnsaver.h>

int GetIdleTime () {
        time_t idle_time;
        static XScreenSaverInfo *mit_info;
        Display *display;
        int screen;
        mit_info = XScreenSaverAllocInfo();
        if((display=XOpenDisplay(NULL)) == NULL) { return(-1); }
        screen = DefaultScreen(display);
        XScreenSaverQueryInfo(display, RootWindow(display,screen), mit_info);
        idle_time = (mit_info->idle)/1000;
        XFree(mit_info);
        XCloseDisplay(display);
        return idle_time;
}

int main() {
char halfint[]="echo -n 'gpuintensity|0,15' | nc 127.0.0.1 4028 >/dev/null";
char fullint[]="echo -n 'gpuintensity|0,20' | nc 127.0.0.1 4028 >/dev/null";
int intensity=0;
int idleseconds=0;

system(halfint);
while (1) {
   idleseconds=GetIdleTime();
        if (idleseconds>10 && intensity<20) {
     system(fullint);
     intensity=20;
        }
        if (idleseconds<2 && intensity>15) {
system(halfint);
intensity=15;
        }
        if (!(idleseconds%10)) {
     printf ("Idleseconds: %d - intensity: %d\n", idleseconds, intensity);
        }
        sleep(1);
}
}

A little tweaking is required on your side, namely the fullint and halfint strings. For example, this dude I know has found that his workmates' tolerance threshold was good even at 15 intensity. YMMV. The tool checks for activity every second; it doesn't make any sense to set it lower. It also prints relative information every 10 seconds, so you can (should) run it in a screen(1) and check it remotely. It doesn't check whether the miner is running; it just tries to set its intensity and assumes RPC port 4028. Compilation instructions are in the top comment.

If anyone finds it useful and profitable, show your appreciation to 1Ls3Ug9V2J83XLsg9EFXgLX7ebSwXc39ix

Share and enjoy and profit!

[EDIT] I forgot to mention, you need netcat(1) to pass the commands to cgminer.
1714224817
Hero Member
*
Offline Offline

Posts: 1714224817

View Profile Personal Message (Offline)

Ignore
1714224817
Reply with quote  #2

1714224817
Report to moderator
1714224817
Hero Member
*
Offline Offline

Posts: 1714224817

View Profile Personal Message (Offline)

Ignore
1714224817
Reply with quote  #2

1714224817
Report to moderator
1714224817
Hero Member
*
Offline Offline

Posts: 1714224817

View Profile Personal Message (Offline)

Ignore
1714224817
Reply with quote  #2

1714224817
Report to moderator
Unlike traditional banking where clients have only a few account numbers, with Bitcoin people can create an unlimited number of accounts (addresses). This can be used to easily track payments, and it improves anonymity.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
ManeBjorn
Legendary
*
Offline Offline

Activity: 1288
Merit: 1004



View Profile
February 01, 2014, 04:24:55 AM
 #2

Pretty neat.
It seems to do what MultiMiner does with it's dynamic intensity setting.  It keeps the system running great while mining away.
Thanks for this utility I will try it out.

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!