Bitcoin Forum
May 30, 2024, 05:02:47 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 »
221  Bitcoin / Pools / @Tycho on: June 05, 2011, 12:11:10 AM
Interesting stats...

222  Bitcoin / Mining / Re: small gpu load (poclbm.py, 3x6950 under ubuntu 11.04) on: June 04, 2011, 06:14:09 PM
This is the fix for the high CPU utilization issue (assuming you don't have something else really wacky going on):

Code:
echo "export GPU_USE_SYNC_OBJECTS=1" >> ~/.bashrc
source ~/.bashrc

Then restart your miners.
223  Bitcoin / Mining / Re: gpu-watch: dynamic GPU temperature monitoring and fan control on: June 04, 2011, 04:30:06 PM
Newer version based on the above. Still requires dual-GPU cards. Now supports configurable limit for immediate 100% fan speed, plus a threshold and interval for simply shutting a GPU down temporarily if the threshold temp is exceeded. Assumes you're using poclbm, and python-psutil is a new requirement.

Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import time
import re
import os
import subprocess
import psutil
import signal
from string import split

settings = {
'poll_time': 60,
'temp_low': 70.0,
        'temp_high': 76.0,
'temp_fan_100': 90.0,
'temp_cooldown': 93.0,
'cooldown_period': 10,
'aticonfig_path': '/usr/bin/aticonfig'
}

class GPU():
def __init__(self, id, cardid, description):
self.id = id
self.cardid = cardid
self.description = description

def temp(self):
os.environ['DISPLAY'] = ":0"
try:
line = subprocess.check_output(
[settings['aticonfig_path'],
"--adapter=" + str(self.id),
"--odgt"])
m = re.search('Temperature - (\d+\.\d+)\s*C', line)
if m is None:
return None

return float(m.group(1))
except OSError:
return None

class Card():
def __init__(self, id, gpus):
self.id = id
self.x11_id = ':0.' + str(id)
self.gpus = gpus

def fanspeed(self, val=None):
os.environ['DISPLAY'] = self.x11_id
if val is not None:
subprocess.call( [settings['aticonfig_path'],
"--pplib-cmd", "set fanspeed 0 " + str(val)])
else:
line = subprocess.check_output(
[settings['aticonfig_path'],
"--pplib-cmd", "get fanspeed 0"])
m = re.search('Fan Speed: (\d+)%', line)
if m is None:
return False
return int(m.group(1))

class Watcher():
def __init__(self):
self.cards = []
os.environ['DISPLAY'] = ":0"
out = subprocess.check_output([settings['aticonfig_path'],
"--list-adapters"])
card = 0
gpu = 0
lines = split(out, "\n")
for line in lines:
r = re.search('^[ \*]+(\d+)\. [\d:\.]+ (.+)$', line)
if r is None:
continue
gpuid = int(r.group(1))
desc = r.group(2)
if gpu % 2 == 0:
self.cards.append(Card(card, []))
self.cards[-1].gpus.append(GPU(gpuid, card, desc))
print "gpu %d card %d desc %s" % (gpuid, card, desc)
if gpu % 2 == 1:
card = card + 1
gpu = gpu + 1

def watch(self):
while True:
for card in self.cards:
if card is None:
continue
self.watch_card(card)
time.sleep(settings['poll_time'])
print "----------------------------------"

def watch_card(self, card):
fanspeed = card.fanspeed()
fandelta = 0
print "Card %d: fan speed %d%%" % (card.id, fanspeed)
for gpu in card.gpus:
temp = gpu.temp()
print "Card %d GPU %d: Temperature %.2f °C" % (
card.id, gpu.id, temp)
if temp >= settings['temp_cooldown']:
for pid in psutil.get_pid_list():
try:
p = psutil.Process(pid)
if len(p.cmdline) > 2 and 'poclbm' in p.cmdline[1]:
n = int(p.cmdline[2][2])
if n == gpu.id:
print "Suspending GPU %d for 10 seconds" % (n)
os.kill(p.pid, signal.SIGSTOP)
time.sleep(settings['cooldown_period'])
os.kill(p.pid, signal.SIGCONT)
except:
pass
if temp >= settings['temp_fan_100']:
fandelta = 100 - fanspeed
continue
if temp > settings['temp_high']:
if fanspeed <= 90:
fandelta = +10
else:
fandelta = 100 - fanspeed
continue
elif temp < settings['temp_low']:
if fanspeed <= 5:
continue
fandelta = -5
if fandelta != 0 and fanspeed + fandelta >= 10:
print "Card %d: Adjusting fan %d%% to %d%%" % (
card.id, fandelta, fanspeed + fandelta)
card.fanspeed(fanspeed + fandelta)

if __name__ == '__main__':
if len(sys.argv) > 1:
try:
f = open(sys.argv[1])
for line in f:
m = re.search('^(\w+)\s*=\s*(\S.*)$', line)
if m is None:
continue
settings[m.group(1)] = m.group(2)
f.close()
except (OSError, IOError), e:
pass

settings['poll_time'] = int(settings['poll_time'])
settings['temp_low'] = float(settings['temp_low'])
settings['temp_high'] = float(settings['temp_high'])
print repr(settings)
w = Watcher()
w.watch()


224  Bitcoin / Mining / Re: gpu-watch: dynamic GPU temperature monitoring and fan control on: June 04, 2011, 04:26:37 PM
I would really like to see a modified version of this. Instead of changing the fan speed relative to the temp I would like to see it...

  • Max fans to 100% on startup
  • slowly increase the core Mhz till the temp gets to a certain threshold
  • if the temp can't get cooler then XX even after down clocking for X rounds email home and stop the GPU miners
  • It should also auto detect the # of GPU's in a server

I have a shell script that runs via cron that does most of this but I'd like to see a python version that runs as a daemon. Think of it as a GPU auto OC'er and temp watch dog all rolled into 1 with email warnings.

This is a neat idea but not something I'd implement myself without some very hard limits. The penalty for clocking too high (at least on my 6990s) isn't overtemperature, it's a complete lockup.
225  Economy / Marketplace / Re: Bitcoin Laundry reduces commission to 0.5% on: June 04, 2011, 02:19:40 PM
Congrats on the AgoristRadio program. For general economies of scale, it's good to see the two main laundries converge.  I have a question about Bitcoin Laundry and server logs so apologies if this has already been discussed and answered elsewhere (I couldn't find it). What is your company's policy on server logs and client confidentiality?

Also, what is your opinion of the approach by https://blindbitcoin.com/security.html

Hi Jon. Thanks, and nice to hear from you.

bitcoinlaundry.com in its current incarnation will probably just go away and become a redirect to app.bitlaundry.com, which is a much more robust system, so I'll talk about logging in the latter.

BitLaundry runs on Google Appengine (for now), and uses two datastore tables: schemes and sends. A user comes to the site, enters destination addresses and schedule information, and then confirms. That creates a record in the schemes table, which then waits for Bitcoins to arrive. When a payment arrives to an address associated with a scheme, the application then creates send records according to the schedule, and deletes the scheme record. As each send is processed (periodically via a cron job), the send records are deleted.

Whereas bitcoinlaundry.com uses some account-labeling code as the equivalent of a scheme database, and thus the app's wallet at least is transiently aware of the entire scheme, the BitLaundry wallet knows nothing, and simply processes receives and sends as it's ordered to.

Since BitLaundry is still in (light) development mode, there is one exception to be aware of. Whenever a scheme is created, a payment is received or a send is conducted, Appengine sends me some XMPP debugging information. For now, I log this locally on my home PC both in order to track the app's activity and to be able to respond appropriately to any bugs.

At some point I'm going to move BitLaundry off of Google entirely and on to a VPS in a favorable jurisdiction where I can also link the application into TOR and I2P. The target then will be zero logging except for the transient database entries necessary to manage schemes and sends.

As for myself, if guys with guns turn up at the door demanding the app's wallet's transaction and account data, they can have it. It won't show them any more than the Block Explorer site would anyway. Aside from that, BitLaundry collects no personal information, sends no email, and I don't talk about its usage other than in the abstract.

The blind bitcoin site sure looks interesting after a cursory reading. I'll dig into that some more; it's also a nice approach.

Peace,
Mike
226  Bitcoin / Mining / Re: gpu-watch: dynamic GPU temperature monitoring and fan control on: May 31, 2011, 12:58:40 PM
Modified version below. REQUIRES dual-GPU cards. Autodetects the cards, and manages all of them. Panic switch at 90C immediately sets that card's fan to 100%.

Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import time
import re
import os
import subprocess
from string import split

settings = {
'poll_time': 60,
'temp_low': 70.0,
        'temp_high': 76.0,
'aticonfig_path': '/usr/bin/aticonfig'
}

class GPU():
def __init__(self, id, cardid, description):
self.id = id
self.cardid = cardid
self.description = description

def temp(self):
os.environ['DISPLAY'] = ":0"
try:
line = subprocess.check_output(
[settings['aticonfig_path'],
"--adapter=" + str(self.id),
"--odgt"])
m = re.search('Temperature - (\d+\.\d+)\s*C', line)
if m is None:
return None

return float(m.group(1))
except OSError:
return None

class Card():
def __init__(self, id, gpus):
self.id = id
self.x11_id = ':0.' + str(id)
self.gpus = gpus

def fanspeed(self, val=None):
os.environ['DISPLAY'] = self.x11_id
if val is not None:
subprocess.call( [settings['aticonfig_path'],
"--pplib-cmd", "set fanspeed 0 " + str(val)])
else:
line = subprocess.check_output(
[settings['aticonfig_path'],
"--pplib-cmd", "get fanspeed 0"])
m = re.search('Fan Speed: (\d+)%', line)
if m is None:
return False
return int(m.group(1))

class Watcher():
def __init__(self):
self.cards = []
os.environ['DISPLAY'] = ":0"
out = subprocess.check_output([settings['aticonfig_path'],
"--list-adapters"])
card = 0
gpu = 0
lines = split(out, "\n")
for line in lines:
r = re.search('^[ \*]+(\d+)\. [\d:\.]+ (.+)$', line)
if r is None:
continue
gpuid = int(r.group(1))
desc = r.group(2)
if gpu % 2 == 0:
self.cards.append(Card(card, []))
self.cards[-1].gpus.append(GPU(gpuid, card, desc))
print "gpu %d card %d desc %s" % (gpuid, card, desc)
if gpu % 2 == 1:
card = card + 1
gpu = gpu + 1

def watch(self):
while True:
for card in self.cards:
if card is None:
continue
self.watch_card(card)
time.sleep(settings['poll_time'])
print "----------------------------------"

def watch_card(self, card):
fanspeed = card.fanspeed()
fandelta = 0
print "Card %d: fan speed %d%%" % (card.id, fanspeed)
for gpu in card.gpus:
temp = gpu.temp()
print "Card %d GPU %d: Temperature %.2f °C" % (
card.id, gpu.id, temp)
if temp >= 90.0:
fandelta = 100 - fanspeed
break
if temp > settings['temp_high']:
if fanspeed <= 90:
fandelta = +10
else:
fandelta = 100 - fanspeed
break
elif temp < settings['temp_low']:
if fanspeed <= 5:
continue
fandelta = -5
if fandelta != 0 and fanspeed + fandelta >= 10:
print "Card %d: Adjusting fan %d%% to %d%%" % (
card.id, fandelta, fanspeed + fandelta)
card.fanspeed(fanspeed + fandelta)

if __name__ == '__main__':
if len(sys.argv) > 1:
try:
f = open(sys.argv[1])
for line in f:
m = re.search('^(\w+)\s*=\s*(\S.*)$', line)
if m is None:
continue
settings[m.group(1)] = m.group(2)
f.close()
except (OSError, IOError), e:
pass

settings['poll_time'] = int(settings['poll_time'])
settings['temp_low'] = float(settings['temp_low'])
settings['temp_high'] = float(settings['temp_high'])
print repr(settings)
w = Watcher()
w.watch()
227  Bitcoin / Mining / Re: Nagios plugin for monitoring GPU temperature and fan speed? on: May 29, 2011, 10:01:00 PM
This is working for me for the GPU temps. You'll need to set up sudoers correctly and chance instances of "syadasti" to whatever userid generally runs your miners.

Haven't yet seen if I can graph off the perfdata, but that's next.

Code:
#!/bin/bash

export DISPLAY=:0
export LD_LIBRARY_PATH=/opt/ati-stream-sdk-v2.3-lnx64/lib/x86_64/
export ATISTREAMSDKROOT=/opt/ati-stream-sdk-v2.3-lnx64
export GPU_USE_SYNC_OBJECTS=1

exit_status=0
serviceoutput=
serviceperfdata=
longserviceoutput=
templist=

for f in `sudo -u syadasti aticonfig --list-adapters | grep : | tr \* ' ' | sed 's/\..*//'`
do
out=`sudo -u syadasti aticonfig --adapter=$f --odgt`
temp=`echo $out | grep Temp | sed -e 's/^.*- .* - //' | sed -e 's/ C.*//'`
templist="$templist $temp"
longserviceoutput="${longserviceoutput}#${f} $temp C;"
#echo $longserviceoutput
serviceperfdata="${serviceperfdata}#${f}=${temp};"
#echo $serviceperfdata
tempint=`echo $temp | sed 's/\..*//'`
if [ $tempint -gt 94 ]
then
exit_status=1
fi
done

if [ $exit_status -ne 0 ]
then
serviceoutput="GPU TEMP WARNING"
else
serviceoutput="GPU TEMP OK"
fi
serviceoutput="$serviceoutput - Temps: / $templist;"

#echo long: $longserviceoutput
#echo serviceperf: $serviceperfdata

echo $serviceoutput \|
echo -n $longserviceoutput \| | sed 's/^#//' | sed 's/#/\n/g'
echo $serviceperfdata | sed 's/;$//' | sed 's/^#/ /'| sed 's/#/\n/g'

exit $exit_status
228  Bitcoin / Mining / Re: "Rug Monitor" - Monitor your mining rigs (graphs for hashrate, temps, etc.) on: May 28, 2011, 11:51:45 AM
This is good stuff, disq. I'm currently thinking about how to modify poclbm output in order to provide input for a Nagios sensor. I'll share it if I come up with anything useful.
229  Bitcoin / Mining / Re: "Rug Monitor" - Monitor your mining rigs (graphs for hashrate, temps, etc.) on: May 28, 2011, 11:22:35 AM
Heres my rug monitor



I lol'd.
230  Bitcoin / Mining software (miners) / The Ballad of the Bitcoin Miner (v0.1-alpha) on: May 28, 2011, 10:50:57 AM
The Ballad of the Bitcoin Miner (v0.1-alpha)

(To the tune of "Rawhide" by Frankie Laine, though preferably performed a bit more like the Dead Kennedys' cover: http://www.youtube.com/watch?v=VuEnSaZC_kA)

I hereby dedicate these lyrics to the public domain under the terms of the Unlicense (http://www.unlicense.org/)


Hashin', hashin', hashin',
Hashin', hashin', hashin',
Hashin', hashin', hashin',
Hashin', hashin', hashin',
Bitcoin!
Hah! Hah!

Keep hashin', hashin', hashin',
Oh my box is thrashin',
Keep them miners hashin', Bitcoin.
Fifteen machines in tandem,
But it's so bloody random,
An' I got this achin' in my groin.
All the things I'm missin',
Good vittles, love, and kissin',
Will be waitin' for me in Des Moines

Ain't no fool, gigajoule,
Power tool, keep 'em cool.
Ain't no fool, gigajoule:
Bitcoin.
Mine 'em out, cash 'em in,
Join a pool, keep 'em cool,
Mine 'em out, cash 'em in:
Bitcoin!
Hah! Hah!

Hashin', hashin', hashin',
Though the market's crashin',
Keep them miners hashin', Bitcoin.
Just let me solve the next block,
And I'll go back to Bangkok.
I've had my fill of Des Moines.
Em dee-five's calculatin',
My true love will be waitin':
Waitin' for me with sirloin.

Ain't no fool, gigajoule,
Power tool, keep 'em cool.
Ain't no fool, gigajoule:
Bitcoin.
Mine 'em out, cash 'em in,
Join a pool, keep 'em cool,
Mine 'em out, cash 'em in:
Bitcoin!

(Hashin', hashin', hashin',)
(Hashin', hashin', hashin',)
Hah!
(Hashin', hashin', hashin',)
Hah!
(Hashin', hashin', hashin',)
Bitcoin.
Hah!
Bitcoin!

231  Bitcoin / Project Development / Re: New service: BTCrate.com on: May 24, 2011, 07:21:01 AM
BTCrate.com now sports a Javascript interface.

By including a script from BTCrate.com into your web page with the appropriate arguments, a Javascript variable btcrate_com_rate will be set with the conversion rate.

Here's a simple example:

Code:
<html><head><title>BTCrate.com Javascript interface test</title>
<script type="text/javascript" src="http://btcrate.com/convert.js?from=btc&to=eur"></script>

</head><body>
<span id="rate"></span>
<script type="text/javascript">
        window.onload = function() {
                document.getElementById("rate").innerHTML="BTC 1 is worth " + btcrate_com_rate + " euros.";
        }
</script>
</body></html>
232  Bitcoin / Project Development / Re: New service: BTCrate.com on: May 24, 2011, 05:08:26 AM
Google and XE.com are demand-polled every 60 minutes.

Are you paying for the XE.com feed?

Hell no:

Code:
r = urllib2.urlopen("http://www.xe.com/tmi/xe-output.php?appid=ffxtn-1.0&from_amount=1&from=" + from_currency + "&to=" + to_currency).read()

Wink
233  Bitcoin / Project Development / Re: New service: BTCrate.com on: May 24, 2011, 01:11:46 AM
The repricing is what I had in mind as well.  While the market is making 10-15% moves in a day, I think an average of some kind is more valuable.

Gotcha. I'll have to think about it. Thus far, I'd envisioned shopping cart implementers polling the service on their own schedule and doing whatever they liked with the data. That could certainly involve building up a moving average and pricing off it. Hmm.

Actually, this is the reverse case of my use case, now that I remember correctly. What I wanted for an e-shop is the ability to price in Bitcoins, but have a convenience option of displaying secondary prices to customers in their local currencies. For that case, you'd actually tend to want up-to-the-minute data.

Now to get an AJAX wrapper done for this..
234  Bitcoin / Project Development / Re: New service: BTCrate.com on: May 24, 2011, 12:20:29 AM
This is great!  Would you be able to provide a X day moving average based on closing price?  If you want to get fancy, a moving average on open, close, high and low would be nice!  Smiley

Thanks.

What you're asking about would require that I take the full trading data feeds from MtGox and Bitomat, which I'm not doing. Seems like you're thinking of a trading application for the data, whereas the need that motivated me to create this is to have a source of conversion data for doing automated re-pricing on Bitcoin-accepting merchant websites.

You could grab weighted pricing from bitcoinmarket.com's API. I think they offer 3 different intervals.
235  Bitcoin / Bitcoin Technical Support / Re: Paying to get RSA signing working in Javascript on: May 23, 2011, 10:48:31 AM
I succeeded in getting "shitassfuck" as output from your test script! Cheesy

So to actually test if the whole thing properly works you would change

Code:
//sedData('test',{});

to

Code:
sendData("account/balance",{});

And the result from the server should be the balance(base64 encoded) if it works, otherwise it's a base64 encoded error(probably bad signature).


... and here I kinda liked the "shitassfuck" API Smiley
236  Bitcoin / Bitcoin Technical Support / Re: Paying to get RSA signing working in Javascript on: May 23, 2011, 09:46:04 AM
I succeeded in getting "shitassfuck" as output from your test script! Cheesy
237  Bitcoin / Project Development / New service: BTCrate.com on: May 23, 2011, 08:52:14 AM
BTCrate.com is a simple service which provides currency conversion between Bitcoin and other world currencies.

To use it, send a request in the form of:

Code:
GET http://btcrate.com/convert?from=<from_currency>&to=<to_currency>[&exch=<exchange>[&conv=<converter>[&amount=<amount>]]]

  • Currently supported exchanges are "mtgox" and "bitomat". Currently supported conversion services are "google" and "xe".
  • MtGox and Bitomat are demand-polled every 10 minutes. Google and XE.com are demand-polled every 60 minutes.
  • MtGox is the default exchange (thereby making the US dollar the default basis currency), and Google is the default conversion service.

Example:

We'll ask for the value of BTC 100 in ounces of gold, using MtGox's last trade rate and XE.com's gold price:

Code:
GET http://btcrate.com/convert?from=btc&to=xau&exch=mtgox&conv=xe&amount=1000

Result:
Code:
{"converted": "4.78023000"}

Thus, 1,000 Bitcoins were equivalent to about 4.78 oz of gold at the time.

Like this service? Your gifts to 1B2Tsi3dz2jm9GBHvAd1QoroAeA3BEBrUS are much appreciated!
238  Bitcoin / Bitcoin Discussion / Re: The $1000 Bitcoin, yes it's worth at least that. on: May 21, 2011, 07:04:26 PM
mike was probably making a reference to the dutch tulip bubble of 1637 (http://www.damninteresting.com/the-dutch-tulip-bubble-of-1637), no?

Indeed.
239  Bitcoin / Bitcoin Discussion / Re: Bitcoin on AgoristRadio.com on: May 21, 2011, 06:57:30 AM
Sweet, more libertarian stuff for my mp3 player. *subscribing
Agorist, AGORIST!!!!!

^-- What he said.
240  Bitcoin / Bitcoin Discussion / Bitcoin on AgoristRadio.com on: May 21, 2011, 12:39:02 AM
I discussed Bitcoin today with Hiro White on Agorist Radio:

http://agoristradio.com/?p=407
Pages: « 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!