Official YURT Design Thread (Development Discussion ONLY)

mikeblas said:
The problem is that we don't know where the user has put YURTMonitor.EXE, so we can't run it from YURTIntaller.EXE. While most/many users would put them in the same directory, there's no guarantee they they did. To guarantee it, we'd need to write an instalaltion application, and I'm really not into signing up for even more work right now. The same problem applies to a shortcut; we'd need to know what the target of the shortcut is.
I'm up for it. I wrote an installer for FAH using NSIS; would using that for this project be a problem? The license doesn't seem to have anything that would possibly cause a problem with respect to using it for this. If it's okay, I can have an installer up probably later today, and build future versions a short time after you release. Okay with you?

 
unhappy_mage said:
Okay with you?
I guess so. At the minimum, I guess I'll have to rewrite a couple of pages of docs. What will the installer do? What modifications in the applications will you require?
 
Basically copy the files to the right places and install the service. It could integrate much of the functionality of the current YURTInstaller if you add a command line switch "/auto", say, which takes the argument and uses it as the answers. So I run:
Code:
YURTInstaller.exe /auto /dir=C:\program files\FAH1 /dir=C:\program files\FAH2 /usefqdn /loglevel=verbose
and it sets up all those attributes and sends data. For now I'll just launch YURTInstaller and copy the files to a reasonable, configurable place. Your input at any point is welcome; if I'm doing something the Wrong Way I'll be glad to change it.

For an example of what kind of stuff this produces, see setup-fold.

 
It's a little demoralizing to take a late-breaking, new requirement like this that requires me to tear down and abandon code that has already been written and tested. How do you think that affects the deadline for the project?

Meanwhile, YURTInstaller does all the CPUID stuff, as well as the system measurement, and reports it to the site. It also creates and encrypts the passcode. I don't see any reason to replace that.

Or is your suggestion that YURTInstaller just becomes a a console app (with no UI) that just does the registration and website registration? If so, how does it handle errors? Communicating results and errors back to the scripts seems a little tenuous, across processes and all.

Maybe this is something better left to the next version. If we keep rewriting, we'll never finish this versio.
 
Next version it is. I didn't mean to add a lot more work; I don't know what your code looks like or how hard it would be to add command line switches to it. I think perhaps this whole installer idea is best left until the next version; as it stands, all I'd be doing is copying the files and calling the service installer.

That said, I think it would be a good thing to have the installer as a part of the next release, and I'd be glad to write the code for it when the time comes.

 
unhappy_mage said:
Next version it is. I didn't mean to add a lot more work; I don't know what your code looks like or how hard it would be to add command line switches to it. I think perhaps this whole installer idea is best left until the next version;
Adding command line parsing isn't hard, but it does need to be tested. (The command line you gave is broken, for example; you need quotes around the directories that have spaces in 'em.)

I don't mind doing the work; tearing stuff down isn't fun, though. We've had six weeks to come up with suggestions like this, and the input, even though useful, is coming too late.

We can't keep making changes--otherwise, we'll never get out of beta.

unhappy_mage said:
as it stands, all I'd be doing is copying the files and calling the service installer.
So how do you send the CPUID data to the site and get it registered?
 
I've fixed the installer problem where it reported 0 directories as being monitored.

I've got a plan for fixing the 100 frames issue, but I haven't had time to implement or test it. Maybe I'll get to it this weekend...

I've heard zero complains from the beta testers, so once we fix those too issues we'll do a limited beta and then quickly go to a larger beta. Should I start a new thread to solicit users for the wider beta?
 
mikeblas said:
I've heard zero complains from the beta testers, so once we fix those too issues we'll do a limited beta and then quickly go to a larger beta. Should I start a new thread to solicit users for the wider beta?

That's probably not a bad idea, go for it. We'll just swap this one around to development discussion only.
 
I've implemented the fix for the 100 frame issue. I want to test it over the weekend at home, since finding problems requires analysing logs and it's easier to see if there's a problem after resetting the machine's stats. So I'm doing it on the rights I've got here at home to avoid having to reset other folk's machines and swap megs of log files in email.

The List of Machines page now shows the last work received date instead of the last updated date for each machine.

It's a bitchin' little subselect, yay for me:
Code:
SELECT OwnerName, OwnerTeamID, Directories, 
   ProcessorCount, PhysicalMemory, MachineName, 
   MeasuredSpeed, RegistrySpeed, MachineName,
   M.MachineID & CAST(4294967295 AS BIGINT) AS MachineIDLo, M.MachineID / CAST(4294967296 AS BIGINT) AS MachineIDHi,
   CAST(M.MachineID AS VARCHAR(32)) AS MachineIDDigits,
   SubmittedDate
FROM Machines M
LEFT OUTER JOIN
  (SELECT MachineID, MAX(SubmittedDate) SubmittedDate FROM
   (SELECT MachineID, MAX(SubmittedDate) SubmittedDate FROM CompletedWorkUnits GROUP BY MachineID
    UNION
    SELECT MachineID, MAX(SubmittedDate) SubmittedDate FROM CompletedFrames GROUP BY MachineID) AS LastActivity
   GROUP BY MachineID)
 AS LastActivityDate ON LastActivityDate.MachineID = M.MachineID
 ORDER BY M.MachineID
 
I haven't had any problems. Now, I also haven't tried to break anything. I haven't really had time. It's also currently only monitoring one of my xeon cores since how I have my folders setup for folding I couldn't have it monitor the second. This last weeks been so crazy I didn't have time to go through and reset install folding, so Yurt could monitor both. Sad.

I wrote a folding install word file for a class, and I had someone usertest it on my machine and they installed it like this.

Folder
...|
...--->Folding 1
....-->Folder 2
.............|
.............--->Folding 2
Silly them. So since Yurt works by monitoring changes in the folder I couldn't monitor Folding 1 since it would have also see the changes in Folding 2.
 
MN Scout said:
Folder
...|
...--->Folding 1
....-->Folder 2
.............|
.............--->Folding 2
Silly them. So since Yurt works by monitoring changes in the folder I couldn't monitor Folding 1 since it would have also see the changes in Folding 2.
Why not? Folder\Folder 2 is different than Folder, so they're seperate. Or am I misundersdtanding your diagram?
 
I've found a simple bug in the 100-frame fix. There seems to be a second problem, and I'll have to see how the first fix affects it. The upshot is that I might not be able to release the next round this weekend, since I've got a bunch of other stuff to do.
 
I think I've got everything fixed. I should be able to send out a small beta tomorrow. Then, next weekend, we can do the wide beta if nothing goes wrong.
 
The individual user page now shows details of the work done by all that user's machines.
 
OK; the new version is ready. I'll be sending mail in a few minutes.
 
Okay, this time I read back to the latest "known bugs" bit. When I installed and started the client (after removing the service, removing the files as instructed) and looked at the log file, everything looked okay except this:
Code:
[2006-04-25 02:35:18] Parsing "C:\Program Files\Folding@Home\FAHlog.txt" for changes
[2006-04-25 02:35:18]  Line 65: found protein 1163 on line 534441366
.... (snip)
[2006-04-25 02:35:18]  Queued frame on protein 1163 for time 978
[2006-04-25 02:35:18]  Queue has 170 items and 0 locked items
[2006-04-25 02:35:18]  Line 324: found protein 1163 on line 534441366
[2006-04-25 02:35:18]  Line 343: frame 326 took 4129 seconds
This is with logging in "debug" mode. Do you want the whole log or FAHlog.txt? That 534441366 is consistent throughout the whole log file; it appears five or six times at apparently random intervals; they may be from when I rebooted the machine over this weekend. Any ideas?

 
mikeblas said:
Why not? Folder\Folder 2 is different than Folder, so they're seperate. Or am I misundersdtanding your diagram?

All the folding 1 files are just sitting there(the exe and cores), and the folding 2 is a folder at the same level as the work folders for folding 1. It's really messed up, but from the doc's it sounded like it wouldn't work. I could try it for a day under the new beta and see if it really doesn't work. Could be a good learning experience. Could use it as a picture for the doc's of what you are not supposed to do. If it indeed turns out to be wrong.

...maybe it's not wrong. :( :rolleyes:
 
unhappy_mage said:
Okay, this time I read back to the latest "known bugs" bit.
Huh?

unhappy_mage said:
When I installed and started the client (after removing the service, removing the files as instructed) and looked at the log file, everything looked okay except this:
Fixed. You can download the same file again and find a slightly newer YURTMonitor.EXE, or keep running what you have; it's harmless.
 
MN Scout said:
All the folding 1 files are just sitting there(the exe and cores), and the folding 2 is a folder at the same level as the work folders for folding 1.
I don't get it. Maybe I'm tired, or maybe you could be clearer. What does "Just sitting there" mean? If Folding 2 is another folder, then what's in it?
 
So this is how it's setup. Is it bad if YURT monitors both of these f@h installs.

fahdirectoryMN_Scout.jpg


So 1 install is in the root "Cancer Research" folder and then the other is a child of that in the "Fold 2" folder.
 
MN Scout said:
So this is how it's setup. Is it bad if YURT monitors both of these f@h installs.

So 1 install is in the root "Cancer Research" folder and then the other is a child of that in the "Fold 2" folder.
That should work just fine. In what directory is YURTMonitor installed?
 
can we make a "corporate folder" version that dosent show the computer name?

our computer names have location/room/etc numbers in them that are fairly unique and I would rather that not be on the web
 
FLECOM said:
can we make a "corporate folder" version that dosent show the computer name?
This version is feature complete. We can consider it for the next version. Thinks to think about to prepare for the discussion would be how to identify the machine if the name ends up being blank. Just use the UserID number?
 
I know this would be asking a lot but if you could make my computer names only visible to me (aka login to the site) and just have it be blank or the UserID or whatever if you are not the owner of that machine that would really help for troubleshooting... but if not then ya the UserID or whatever just not the full computer name... I dont care about my machines at home, but like I said, I doubt most corporate folders (which could benifet a lot from this tool) would like their computer names published
 
2nd on the computer name not being visible. Nothing pressing, just in my case company name would be all over the place.
 
Indeed, implementing logins (and passwords, and all the infrastructure to support them; and managing lost passwords) is not something I'm going to be doing.

FLECOM said:
would like their computer names published
Why not? If the machine is visible from the Internet, it's either hardened, or a security risk whether the machine name is known or not. Note that there's already an option to not send the FQDN; mikeblas5 is really mikeblas5.redmond.corp.microsoft.com, for example.
 
I'm in agreement with the name not being shown. It's not a matter of the name being a security risk in that someone could access the PC, its a matter of the actual name of the PC containing company name and/or personal names. For instance, many of our PCs are named with a location code and the person's last name. That's not information I'd want shown online.
 
Okay. There seems to be demand for it, though I don't really understand the anonymity requirement. I don't think it's worth delaying the release any further, though.
 
No, not worth delaying, but for the next release I'd consider it a priority feature.

My logic is this: If you had a computer with your name on it at work and suddenly you found out your name was listed on the internet, associated with something you had no idea about, you might be a little unhappy. Also, some folders (myself included) just don't wish to have our company name associated with our folding efforts.
 
Actually none of my machines are visible from the internet since we are on our own private WAN that then goes through NAT to the internet...

I agree that it shouldent delay the release but for a future version
 
amenthes said:
My logic is this: If you had a computer with your name on it at work and suddenly you found out your name was listed on the internet, associated with something you had no idea about, you might be a little unhappy.
I'd then wonder what put my name there. If I found a process on my machine running without my permission, it would certainly seem more important than the machine's name appearing on a web page.
 
Well I have permission to run the service but if the computer names get published and somone runs across it they might wonder why they cant run it under their own name/team whatever and I would rather not draw attention to the fact its there anyway... the lower profile I keep with my corporate machines they happier they are and then they will have no issue ignoring its presence...
 
mikeblas said:
If I found a process on my machine running without my permission, it would certainly seem more important than the machine's name appearing on a web page.

Certainly, but these aren't "their" machines, they are the company's machines, and the company has authorized running FAH on the machines. However the user has not authorized their name to be associated with folding, nor should they. They have no control over what their machines do and don't, since they are just the "user".

I just want to be clear that we're not talking about trying to hide something from someone here.
 
amenthes said:
Certainly, but these aren't "their" machines, they are the company's machines, and the company has authorized running FAH on the machines. However the user has not authorized their name to be associated with folding, nor should they. They have no control over what their machines do and don't, since they are just the "user".

I just want to be clear that we're not talking about trying to hide something from someone here.
I see. Thanks for the clarification.

Maybe I can cook up something that goes into the current version ... we'll see.
 
I don't think its worth delaying or causing you any extra work at this point. Personally, only a few of my machines would be affected by this issue. I would still have several machines to install YURT on, and wouldn't be too concerned about not having 100% of my machines on at this point.
 
This is starting to get fun.


SELECT ISNULL(Intel.ProteinID, AMD.ProteinID) AS ProteinID,
Intel.MachineCount, Intel.UnitCount, Intel.FrameCount, Intel.UnitTime, Intel.FrameTime, Intel.FramePoints, Intel.WorkPoints,
AMD.MachineCount, AMD.UnitCount, AMD.FrameCount, AMD.UnitTime, AMD.FrameTime, AMD.FramePoints, AMD.WorkPoints
FROM
(SELECT P.ProteinID, COUNT(DISTINCT M.MachineID) MachineCount, SUM(UnitCount) UnitCount, SUM(FrameCount) FrameCount,
SUM(UnitTime) UnitTime, SUM(FrameTime) FrameTime, SUM(FrameCount / P.Frames * P.Points) FramePoints, SUM(UnitCount * P.Points) WorkPoints
FROM dbo110146050.CPUIDValues CPU
LEFT JOIN dbo110146050.Machines M ON M.MachineID = CPU.MachineID
LEFT JOIN dbo110146050.CompletedWork AS CW ON CW.MachineID = M.MachineID
LEFT JOIN dbo110146050.Proteins P ON CW.ProteinID = P.ProteinID
WHERE CPU.ECX = 1818588270 AND CPU.CPUIDCode = 0
GROUP BY P.ProteinID) AS Intel
FULL OUTER JOIN (
SELECT P.ProteinID, COUNT(DISTINCT M.MachineID) MachineCount, SUM(UnitCount) UnitCount, SUM(FrameCount) FrameCount,
SUM(UnitTime) UnitTime, SUM(FrameTime) FrameTime, SUM(FrameCount / P.Frames * P.Points) FramePoints, SUM(UnitCount * P.Points) WorkPoints
FROM dbo110146050.CPUIDValues CPU
LEFT JOIN dbo110146050.Machines M ON M.MachineID = CPU.MachineID
LEFT JOIN dbo110146050.CompletedWork AS CW ON CW.MachineID = M.MachineID
LEFT JOIN dbo110146050.Proteins P ON CW.ProteinID = P.ProteinID
WHERE CPU.ECX = 1145913699 AND CPU.CPUIDCode = 0
GROUP BY P.ProteinID) AS AMD
ON AMD.ProteinID = Intel.ProteinID
ORDER BY ISNULL(Intel.ProteinID, AMD.ProteinID)
 
I've taken care of the overflow and divide by zero errors that popped up after we started getting completed work items with no completed frames. (A previous assumption was set asunder by fixing the 100 frames bug.)

Let me know if you find any others...
 
I've added an option to register the machine's name being the same as the machine's User ID.

Everything else is looking good, so I should be able to update the docs tonight and send out the wider beta Saturday.
 
Back
Top