Jump to content

LTT Folding Team's Emergency Response to Covid-19

Go to solution Solved by GOTSpectrum,

This event has ended and I recommend you guys head over to the Folding Community Board for any general folding conversation. 

 

 

9 minutes ago, ThermicWaffle5 said:

Anyone know if they are adding a "COVID-19" disease for the on I am fighting for?

Not specifically. Right now the "Any disease" prioritizes COVID-19 projects, which you can find a list of on their site

https://foldingathome.org/2020/03/30/covid-19-free-energy-calculations/

"Put as much effort into your question as you'd expect someone to give in an answer"- @Princess Luna

Make sure to Quote posts or tag the person with @[username] so they know you responded to them!

 RGB Build Post 2019 --- Rainbow 🦆 2020 --- Velka 5 V2.0 Build 2021

Purple Build Post ---  Blue Build Post --- Blue Build Post 2018 --- Project ITNOS

CPU i7-4790k    Motherboard Gigabyte Z97N-WIFI    RAM G.Skill Sniper DDR3 1866mhz    GPU EVGA GTX1080Ti FTW3    Case Corsair 380T   

Storage Samsung EVO 250GB, Samsung EVO 1TB, WD Black 3TB, WD Black 5TB    PSU Corsair CX750M    Cooling Cryorig H7 with NF-A12x25

Link to comment
Share on other sites

Link to post
Share on other sites

37 minutes ago, HaRdLy007 said:

$90 US?

Yes, 90 Bald Eagle feathers. Includes shipping.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, TVwazhere said:

Not specifically. Right now the "Any disease" prioritizes COVID-19 projects, which you can find a list of on their site

https://foldingathome.org/2020/03/30/covid-19-free-energy-calculations/

Ok cool, then I'm doing it right. Thanks!

 

^^^^ That's my post ^^^^
<-- This is me --- That's your scrollbar -->
vvvv Who's there? vvvv

Link to comment
Share on other sites

Link to post
Share on other sites

56 minutes ago, HaRdLy007 said:

I have now tried GCP and AWS. No luck with either.

What is the issue with AWS? I don't have any problems with them.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, Bitter said:

90 Bald Eagle feathers

Ah shit I only have 67 Bacon strips and 23 9mm ammo, is that enough?

"Put as much effort into your question as you'd expect someone to give in an answer"- @Princess Luna

Make sure to Quote posts or tag the person with @[username] so they know you responded to them!

 RGB Build Post 2019 --- Rainbow 🦆 2020 --- Velka 5 V2.0 Build 2021

Purple Build Post ---  Blue Build Post --- Blue Build Post 2018 --- Project ITNOS

CPU i7-4790k    Motherboard Gigabyte Z97N-WIFI    RAM G.Skill Sniper DDR3 1866mhz    GPU EVGA GTX1080Ti FTW3    Case Corsair 380T   

Storage Samsung EVO 250GB, Samsung EVO 1TB, WD Black 3TB, WD Black 5TB    PSU Corsair CX750M    Cooling Cryorig H7 with NF-A12x25

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, j0hn0b said:

sorry to repost this, but is anyone else still missing a fair amount of points from late last week? I'm getting updates now, but there's a day or so where the WUs never hit the stats page. The log didn't show issues

Yeah. i've been missing points for about the last 24 hrs. So far I got 156k points and 2 WU since.

Link to comment
Share on other sites

Link to post
Share on other sites

Anyone else but hurt like me that they are not able to help more with this? I have 2 servers running but am getting like 1 or 2 WUs a day still. 

Link to comment
Share on other sites

Link to post
Share on other sites

No becasue when that happens we set the advanced client flag.

F@H
Desktop: i9-13900K, ASUS Z790-E, 64GB DDR5-6000 CL36, RTX3080, 2TB MP600 Pro XT, 2TB SX8200Pro, 2x16TB Ironwolf RAID0, Corsair HX1200, Antec Vortex 360 AIO, Thermaltake Versa H25 TG, Samsung 4K curved 49" TV, 23" secondary, Mountain Everest Max

Mobile SFF rig: i9-9900K, Noctua NH-L9i, Asrock Z390 Phantom ITX-AC, 32GB, GTX1070, 2x1TB SX8200Pro RAID0, 2x5TB 2.5" HDD RAID0, Athena 500W Flex (Noctua fan), Custom 4.7l 3D printed case

 

Asus Zenbook UM325UA, Ryzen 7 5700u, 16GB, 1TB, OLED

 

GPD Win 2

Link to comment
Share on other sites

Link to post
Share on other sites

Just now, WaldorfMan said:

Sooooooooo - how do we go about grabbing jobs from this server explicitly?

 

And AWESOME job on the video guys!   Loved it.

You don't. It's random draw.  

Link to comment
Share on other sites

Link to post
Share on other sites

Just bought 2 shirts!

My Folding Stats

My BOINC Stats

 

 

VelosterN:

AMD Ryzen 9 5950X - Asus ROG Strix X570-E Gaming - Corsair Vengeance RGB Pro 3600Mhz 32GB - Asus ROG Strix Gaming 6750 XT OC

Corsair Crystal Series 680x RGB - Samsung 970 Evo Plus 250GB NVMe - Samsung 970 Pro 512GB NVMe - Samsung 860 Pro 256 GB 2.5" SSD X2

EVGA P2 80+ Platinum 850Watt PSU - BenQ XL2730Z 27.0" 2560x1440 144 Hz - be quiet! Dark Rock 4

Corsair K70 LUX - Logitech G502 Proteus Spectrum - Sennheiser HD599 - Blue Yeti Mic

Windows 11 Professional Version 22H2

BettyBoop:

AMD Ryzen 5 2600X - Asus ROG Strix B450-I Gaming - Corsair Vengeance LPX 3000Mhz 16GB - Asus ROG Strix Gaming 5500 XT - Fractal Design Core 500

Samsung 860 Pro 512GB Sata - EVGA 550GM 80+ Gold 550Watt SFX PSU - be quiet! Dark Rock 4

Windows 11 Professional Version 22H2

HTPC:

Intel i7 6700K - Asus Maximus Hero VIII - Corsair Vengeance LPX 3000MHz 16GB - MSI RX480 Gaming-X 8GB - Cooler Master 932 HAF

Seagate 250GB HDD - EVGA G2 80+ Gold 650Watt PSU - Corsair H100i

Windows 10 Professional Version 21H2

 

Link to comment
Share on other sites

Link to post
Share on other sites

16 minutes ago, TVwazhere said:

Ah shit I only have 67 Bacon strips and 23 9mm ammo, is that enough?

Somehow you accidentally have the formula for bald eagle feathers; They are roughly 75% bacon and 25% ammo; and ofc 100% f'n murica

El Zoido:  9900k + RTX 4090 / 32 gb 3600mHz RAM / z390 Aorus Master 

 

The Box:  3900x + RTX 3080 /  32 gb 3000mHz RAM / B550 MSI mortar 

Link to comment
Share on other sites

Link to post
Share on other sites

22 minutes ago, Bitter said:

Yes, 90 Bald Eagle feathers. Includes shipping.

Very tempting, have to see if I have enough Loon's to cover it.

My Folding Stats

My BOINC Stats

 

 

VelosterN:

AMD Ryzen 9 5950X - Asus ROG Strix X570-E Gaming - Corsair Vengeance RGB Pro 3600Mhz 32GB - Asus ROG Strix Gaming 6750 XT OC

Corsair Crystal Series 680x RGB - Samsung 970 Evo Plus 250GB NVMe - Samsung 970 Pro 512GB NVMe - Samsung 860 Pro 256 GB 2.5" SSD X2

EVGA P2 80+ Platinum 850Watt PSU - BenQ XL2730Z 27.0" 2560x1440 144 Hz - be quiet! Dark Rock 4

Corsair K70 LUX - Logitech G502 Proteus Spectrum - Sennheiser HD599 - Blue Yeti Mic

Windows 11 Professional Version 22H2

BettyBoop:

AMD Ryzen 5 2600X - Asus ROG Strix B450-I Gaming - Corsair Vengeance LPX 3000Mhz 16GB - Asus ROG Strix Gaming 5500 XT - Fractal Design Core 500

Samsung 860 Pro 512GB Sata - EVGA 550GM 80+ Gold 550Watt SFX PSU - be quiet! Dark Rock 4

Windows 11 Professional Version 22H2

HTPC:

Intel i7 6700K - Asus Maximus Hero VIII - Corsair Vengeance LPX 3000MHz 16GB - MSI RX480 Gaming-X 8GB - Cooler Master 932 HAF

Seagate 250GB HDD - EVGA G2 80+ Gold 650Watt PSU - Corsair H100i

Windows 10 Professional Version 21H2

 

Link to comment
Share on other sites

Link to post
Share on other sites

10 hours ago, BlueSpartan said:

What IP's need to be added? I tried my local host IP and got "telnet closed/timed out" ETC.

Like Fulminatrix said, if you are running FAH client only in the same machine as the babysitter your "hosts" would look like this:

hosts = [ #quoted strings, hosts or IPs separated by comma
  'localhost',
]

if you are running FAH client  on 192.168.1.20 and the same machine as the babysitter it would look like this

hosts = [ #quoted strings, hosts or IPs separated by comma
  'localhost',
  '192.168.1.20',
]

You can use network hosts with no issues(I do) as long as the babysitter machine is able to ping them/see them when sharing files

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, WaldorfMan said:

Hell Yeah Brother GIF - HellYeah RockAndRoll Guitar - Discover ...

I cant see this without hearing voodoo child 

El Zoido:  9900k + RTX 4090 / 32 gb 3600mHz RAM / z390 Aorus Master 

 

The Box:  3900x + RTX 3080 /  32 gb 3000mHz RAM / B550 MSI mortar 

Link to comment
Share on other sites

Link to post
Share on other sites

Ahh shoot, just realized i can't qualify now bc my windows installation was screwed up for a few days and I'll be a day short of ten 😅. Oh well, more than happy to keep going and contributing to the team and humanity 👍

Link to comment
Share on other sites

Link to post
Share on other sites

On 4/5/2020 at 4:35 AM, efka112 said:

yep points are lagging behind. i think even F@H stats are a bit lagging behind

F@H stat server might be getting overloaded.

Wouldn't be the first time stats lagged, but this time they have more reason for it.

 

The Overclocking stats site relies on the actual F@H stats servers for IT'S data, on an every 3'd hour stats file pull.

 

Problem MIGHT have cleared up, there was a big "bump" on everyone early this morning.

Link to comment
Share on other sites

Link to post
Share on other sites

21 hours ago, danielocdh said:

babysitter python script

It will automatically scan all the slots and pause+unpause slots that are "Waiting On: WS Assignment" and have too high "Next Attempt"

Need to set host(s) and password(only if you use a password)

  Reveal hidden contents

 



################################################################################
##                                  options                                   ##
################################################################################
hosts = [ #quoted strings, hosts or IPs separated by comma
  'localhost',
  '192.168.0.123',
]
hostsPassword = '' #quoted string, if the host(s) don't use a password just leave it as: ''

restartLimit = 10 * 60 #in seconds, pause+unpause if next attempt to get WU is this or more
checkEvery = 2 * 60 #in seconds, do a check for all hosts every this seconds

tConTimeout = 15 #in seconds, connection timeout
tReadTimeout = 10 #in seconds, read timeout
testMode = False # if set to True: checkEvery=6 and restartLimit=0 but won't actually pause+unpause slots

################################################################################
##                                    code                                    ##
################################################################################
import json
import re
import telnetlib
import time
import datetime

if testMode:
    restartLimit = 0
    checkEvery = 6
countEvery = 1 #seconds, have to be a factor of checkEvery, default: 1
countEveryDec = max(0, str(countEvery)[::-1].find('.'))
countEveryDecStr = f'{{:.{countEveryDec}f}}'
def remSeconds(seconds):
    if seconds > 0:
        if (seconds * 10000) % (countEvery * 10000) == 0:
            secondsP = countEveryDecStr.format(seconds)
            pr(f'Next check in {secondsP} seconds', same=True)
        time.sleep(countEvery)
        seconds = round((seconds - countEvery) * 10000) / 10000
        remSeconds(seconds)

prLastLen = 0
prLastSame = False
def pr(t, indent=0, same=False, overPrev=False):
    global prLastLen, prLastSame
    if not overPrev and not same and prLastSame:
        prLastLen = 0
        print('')
    t = str(t)
    toPrint = ('  ' * indent) + t
    tLen = len(toPrint)
    print(toPrint + (' ' * max(0, prLastLen - tLen)), end='\r')
    prLastSame = same
    prLastLen = tLen
    if not same:
        print('')
        prLastLen = 0

def checkKeep():
    while (True):
        checkAll()
        remSeconds(checkEvery)

def checkAll():
    for host in hosts: check(host)
    now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    pr(f'check complete at {now}', 0, False, True)


tEnd = ['\n> '.encode('utf-8'), '\n---\n'.encode('utf-8')]
def readResult(expected, expectedResult=''):
    index = expected[0]
    readB = expected[2]
    read = readB.decode('utf-8')
    #noting
    if index < 0 or read == '': return [False, 'nothing was read']
    #expected result
    if expectedResult:
        endWith = tEnd[index].decode('utf-8')
        readStrip = read[0:-len(endWith)].strip()
        if (readStrip != expectedResult):
            return [False, f'{readB}']
    #PyON->json
    match = re.search('\nPyON (\d+) ([-_a-zA-Z\d]+)\n(.*)\n---\n', read, re.DOTALL)
    ###print('');print('');print('');print(index);print(match);print(read);print(readB);print('');
    if match:
        version = match.group(1)
        if version != '1': raise Exception('Response data version does not match')
        data = match.group(3)
        #to json
        data = re.sub('(:\s)?False', r'\1false', data)
        data = re.sub('(:\s)?True', r'\1true', data)
        data = re.sub('(:\s)?None', r'\1null', data)
        data = json.loads(data)
        return [True, data]
    #auth error
    match = re.search('\nERROR: unknown command or variable', read, re.DOTALL)
    if match:
        raise Exception('error sending command, wrong password?')
    #return read
    return [True, read]
def tnCreate(host):
    tn = telnetlib.Telnet(host, 36330, tConTimeout)
    readResult(tn.expect(tEnd, tReadTimeout))
    return tn

def sendCmd(tn, cmd, par=''):
    if cmd == 'auth':
        if hostsPassword:
            cmdStr = f'auth {hostsPassword}';
            tn.write(f'{cmdStr}\n'.encode('utf-8'))
            res = readResult(tn.expect(tEnd, tReadTimeout), 'OK')
            if not res[0]: raise Exception(f'Error with {cmd}, {res[1]}')
            return res[1]
        return True
    elif cmd == 'exit':
        cmdStr = f'{cmd}';
        tn.write(f'{cmdStr}\n'.encode('utf-8'))
        res = readResult(tn.expect(tEnd, tReadTimeout))
        if not res[0]: raise Exception(f'Error with {cmd}, {res[1]}')
        return res[1]
    elif cmd == 'slot-info' or cmd == 'queue-info':
        cmdStr = f'{cmd}';
        tn.write(f'{cmdStr}\n'.encode('utf-8'))
        res = readResult(tn.expect(tEnd, tReadTimeout))
        if not res[0]: raise Exception(f'Error with {cmd}, {res[1]}')
        return res[1]
    elif cmd == 'get-info-and-restart':
        queueData = sendCmd(tn, 'queue-info')
        slotData = sendCmd(tn, 'slot-info')
        ###
        #if type(queueData) == str: print('');print('');print('');print(queueData);print(queueData.encode('utf-8'));print('');
        #if type(slotData) == str: print('');print('');print('');print(slotData);print(slotData.encode('utf-8'));print('');
        restarted = []
        for slot in slotData:
            isStillRunning = False
            queueDl = False
            for queue in queueData:
                if queue['slot'] == slot['id']:
                    if queue['state'] == 'RUNNING': isStillRunning = True
                    if queue['state'] == 'DOWNLOAD': queueDl = queue
            if not isStillRunning and queueDl and queueDl['waitingon'] == 'WS Assignment':
                match = re.match('\s?(\d+ days?)?\s?(\d+ hours?)?\s?(\d+ mins?)?\s?([\d.]+ secs?)?', queueDl['nextattempt'])
                if match:
                    seconds = 0
                    if match.group(1): seconds += int(re.sub('[^\d.]', '', match.group(1))) * 3600 * 24
                    if match.group(2): seconds += int(re.sub('[^\d.]', '', match.group(2))) * 3600
                    if match.group(3): seconds += int(re.sub('[^\d.]', '', match.group(3))) * 60
                    if match.group(4): seconds += round(float(re.sub('[^\d.]', '', match.group(4))) * 1)
                    if seconds >= restartLimit:
                        if not testMode:
                          sendCmd(tn, 'pause', queueDl['slot'])
                          time.sleep(1)
                          sendCmd(tn, 'unpause', queueDl['slot'])
                        restarted.append([queueDl['slot'], queueDl['nextattempt']])
                else: raise Exception(f'Error with {cmd}, parsing queue nextattempt:{queueDl["nextattempt"]}')
        return restarted
    elif par and (cmd == 'pause' or cmd == 'unpause'):
        cmdStr = f'{cmd} {par}';
        tn.write(f'{cmdStr}\n'.encode('utf-8'))
        res = readResult(tn.expect(tEnd, tReadTimeout))
        if not res[0]: raise Exception(f'Error with {cmd}, {res[1]}')
        return res[1]
    else : return False

def check(host):
    st = time.time()
    pr(f'checking {host}', 1, True)
    try:
        tn = tnCreate(host)
        sendCmd(tn, 'auth')
        restarted = sendCmd(tn, 'get-info-and-restart')
        if len(restarted):
            pr(f'{host}: restarted {len(restarted)} slot{"s" if len(restarted) > 1 else ""}: ' + ', '.join(map(lambda item: '' + (' with '.join(item)), restarted)), 1, False, True)
        sendCmd(tn, 'exit')
        ed = time.time()
        time.sleep(max(0, 1 - (ed - st)))
    except Exception as err:
        pr(f'{host} error: {err}', 1, False, True)

checkKeep()

 

 

Looks like this when running:

ubu.png.dcef9a0ae7cddf57aa326276700f68ad.png

 

It access the clients API in a similar(much simpler) way that FAHControl or HFM.NET do

It won't restart slots that are still running and trying to download a new WU at the same time.

Tested on python 3 on windows (3.8.2)and ubuntu (3.6.9)

Let me know if you find any issues, it was stable for me after a few hours

 

Nice work! I'm writing a bit of code on my end too to improve visuals and pull data I want out. All in nodejs also using the socket interface.

Link to comment
Share on other sites

Link to post
Share on other sites

Guest
This topic is now closed to further replies.


×