Jump to content

Roy

Banned
  • Posts

    2,853
  • Joined

  • Last visited

  • Days Won

    383

Posts posted by Roy

  1. I'm going to move this to the "Ideas" forum under "Administration". We definitely need to start making more money and the first thing I would focus on is in-game/website perks. I have a few ideas that I will post later.

     

    With that said, getting MOTD Ads deployed on all Garry's Mod servers will be important. There are other things we will setup that will help as well (I will discuss this later).

     

    Please give your input on this! I've seen many suggestions in the past go un-noticed ( @Major_Push @ the Supporter Give-Aways based on Ad revenue?). Mostly due to me being a bit busy but since we have (in my opinion) a much stronger BoD team than before, I think we can finally start getting stuff done.

     

    Thanks.

  2. All the servers are moved off of the old machine (I did this sooner than I expected). If you experience any issues, please let me know. I ensured each server successfully connected to the MySQL server. However, there is always a possibility that something else went wrong.

     

    4 hours ago, Batty said:

    After you explained what was different with Linux, I can't wait to see the rest of the servers moved to Linux (if they do get moved). Good choice!

    Yep! Basically, in my opinion, Linux for game servers beats Windows any day :)

     

    Thanks.

  3. CS:S Bunny Hop and Garry's Mod Murder #1 are moved to the new VPS.

     

    Note to Current/Future Server Managers running GMod servers on Linux

    All the folders in addons/ must not contain any uppercase letters. They will not be loaded if they do. I believe the reason for this is because Garry's Mod loads these addons with all lowercase letters. This isn't an issue in Windows because the directory "notes", "Notes", and "nOteS" are basically the same directory while in Linux, you can have two separate directories with one named "notes" and the other named "Notes" (case-sensitive basically).

     

    Thanks.

  4. 53 minutes ago, Spookytime666 said:

    @Roy currently we are working on bringing back Deathrun (Not a big secret, most know already) then there are some other oldies I want to bring back. We haven't decided if/when we want to do Jailbreak again.

     

    With what you said about the MOTD Ads, I'm all for them and have been wondering when we were going to do them. Now if you were to add them to the loading screen would it be possible to maybe have the add just be in a corner of the screen? Also you say members+ are immune to the ads(I figure this is to encourage people to apply for member) but does that mean someone who is member+ can't see ads? If they can still choose to see them I would enable them just to help out.

    Initially, I was planning on having the ad as a pop-up. Now thinking about it, we could easily just do it in the corner. The problem is, I never could get the loading screen with the ad to consistently load (e.g. the ad/page would only load 1/4 of the time).

     

    We can definitely add a feature so that Members+ can have the ads load if they want to support GFL in the loading screen.

     

    Thanks. 

  5. 1 hour ago, Major_Push said:

     

    Hate to disagree with you on 2 things but I feel like they're worth reiterating. It's going to sound a bit whiny since it's something I've been experiencing a bit this week.

     

    Anyway, the first thing is that we definitely can do more to populate our servers.

     

    One thing that I've brought up before is holding admins more accountable for playing on their respective servers or else they risk losing their admin. Currently, some admins can not play on their server for months without being demoted and that's honestly not a good way to run a server. Because then the admins aren't going to feel like they need to play. Obviously, it's hard to keep track of them all the time, and I understand that it's really draining to try populating a server when it seems like your efforts are in vain, but we have to make an effort to hold admins more accountable. Also, it would help if everyone wasn't trying to populate their own server and only their own server. 

     

    This is going to sound a bit whiny, but it's hard for me to get people on DB when some of them have to be populating their own server whether that be ZM, Purge, JB, etc. The problem is that our resources are spread thin and we can't make a concentrated attempt. The way I think of our servers is that they're like an organism "budding" to make more versions of itself. We start off with 1 server and populate that one. After that one's populated, we can take some of our new found players and use them to "bud" off and make a 2nd server which we then populate. By the end of the process we should have 2 healthy servers which can both bud off to help populate a 3rd and/or 4th server. Afterwards we should be able to bud off more and more and more. The way I see our current process is that we have a few good servers that can bud off properly to make new servers, but they tend to come off premature and wither and die which don't help us grow. ie. We get a new server that ends up wasting our resources but dies off. Which is why I always say that we should slow down on trying to make new servers when we have old ones that need work. If ALL of our servers were at the level that ZE's at right now then we'd be a powerhouse and could be making new servers left and right. But right now we've got a bunch of servers that don't have the necessary attention to succeed. We could/should cut some of the dead servers. I guess I'll defend db a bit right now since I'm sort of advocating cutting it. DB is currently one of the only two decoy dodgeball servers that exist in the world. The other one is running 1 map 24/7 so it doesn't even really count. So in reality, we're the only db server that exists right now in CSGO. So it shouldn't be too hard to populate once I make the Reddit post at the end of this month. 

     

    When we make a new server it shouldn't just kind of release one day. A server being released should be an event and not just something that occurs. I'd say that we should do at most 1 new server a month. Or at the very least, we shouldn't make any new servers while we have a server that's struggling. There's no point in releasing 2~3 new servers in the same month just to have them compete for attention. 

     

    And this brings us into my 2nd disagreement. And that's that we're NOT a strong community. We're actually a rather weak community, imo. Admins from 1 server almost never want to help out admins from another server. And pretty much everyone's in their own clique which creates a very weak sense of community. If we were in fact a strong community then we wouldn't have had things like the CSS division leaving and we wouldn't have as many dead/dying servers as we do. The GMod division, TF2 Division, CSGO Division, and what is left of the CSS division could all break away 1 day and it wouldn't bother anyone else in any other division. The old CSS division was admittedly a bit of an outlier in that they were conservative in their views on how a server should be run compared to the rest of the community. ie. Let the players do more or less what they please.

     

    And the problem even goes down a bit worse into server admins not caring about servers within their own division. Earlier this month we had a post by a GMod Admin about how the GMod admins had problems working together. Some of the CSGO admins probably laugh it off like "oh, that's just because they're GMod admins" but that's honestly hypocritical. Within the CSGO division, we have a lot of dead servers which get no love from their fellow servers. There's a huge disconnect between a lot of the admins from different servers so I honestly don't think we're a strong community. We're a weak one and we need to be a lot more cooperative or else the community won't be able to bud off any new good servers and eventually all of our good servers will fail until we're down to our strongest 2 servers (ZE and TTT).

     

    I, for one, always do my part in helping out with populating new servers and I'd like to see our current admin team get more involved with populating new servers. Obviously they have to take care of their own servers (especially if they're dying) but the way things are currently is not something I'd describe as strong. 

     

     

    I posted quite a few solutions on another thread but almost no one replied to it which is quite sad since I think that some of the things I listed can be quite beneficial to the server. Once I get DB populated, hopefully by the end of this year, I'm going to go back to helping out with populating our servers.

     

    tl;dr: We can do A LOT more to populate our servers despite how shitty Valve has been. I don't think that we should use the "It's valve's fault" excuse to explain why most of our servers are dying when there's a lot of internal failures. And we're NOT a strong community. We're pathetically weak as a community and part of that has to do with the fact that admins from 1 server don't care about the admins on another server. I listed quite a few things that I think can help here: https://gflclan.com/forums/topic/5372-some-suggestions/

     

    We kind of have a crab mentality (https://en.wikipedia.org/wiki/Crab_mentality). We all want OUR server to succeed but don't want to help out the other servers because it doesn't immediately help us and since everyone thinks this, none of our servers get populated. And just like those crabs aren't a community, nor are we. We need to help each other out and then when we need help, we'll get it. This will require EVERYONE to work together.

     

     

    If we don't step up as members of this community to become a stronger community then we're going to crash and burn eventually. And I'd really not like that.

     

     

    I know it sounds hypocritical but mind you that I've been saying this for at least 2 years now.

    I apologize for not responding to your suggestions thread, while reading this post I remembered I was suppose to read it. I will read it soon (as long as nothing important comes up again).

     

    While I do agree with a lot of the things you're saying, I do believe you highly underestimate how difficult it is to "keep" a CS:GO server populated. Yes, short-term populating isn't an issue, especially with having ~5 - 10 GFL members on the server, but keeping it populated without those ~5 - 10 GFL members is the rather difficult part. I guarantee you that if we "cheap'd" out and put weapon skins on our servers, they would immediately receive a ton of population (but no, we will NOT do that since we're a fair community). With that said, I do believe having admins and such help on other servers will help us but if they don't, that wouldn't make them a bad admin. As long as they are actively helping the server(s) they are assigned to (e.g. playing on them daily, etc), I don't have any problems.

     

    I'm not going to go into much more. But like I said before, I do agree with you on how admins need to start actually playing their server, etc. Once we get a nice admin tracking system, I hope this becomes easier. With that said, if there are any admins who haven't played their server for over a month with proof and no notice, I'll gladly demote them from that specific server (it SHOULD be the Server Manager's job).

     

    Thanks.

  6. Also leaving these test results here using the threadpool_run_tests command...

     

    Linux

    Quote

    Testing 2 threads:
    CTSQueue test: single thread push/pop, in order... pass
    CTSQueue test: single thread push/pop, interleaved... pass
    CTSQueue test: sequential push, multithread pop, no affinity...pass
    CTSQueue test: single thread push, multithread pop, no affinity...pass
    CTSQueue test: multithread push, sequential pop, no affinity...pass
    CTSQueue test: multithread push, single thread pop, no affinity...pass
    CTSQueue test: multithread push, multithread pop, no affinity...pass
    CTSQueue test: multithread interleaved push/pop, no affinity...pass
    CTSQueue test: sequential push, multithread pop, distributed...pass
    CTSQueue test: single thread push, multithread pop, distributed...pass
    CTSQueue test: multithread push, sequential pop, distributed...pass
    CTSQueue test: multithread push, single thread pop, distributed...pass
    CTSQueue test: multithread push, multithread pop, distributed...pass
    CTSQueue test: multithread interleaved push/pop, distributed...pass

    Testing 4 threads:
    CTSQueue test: single thread push/pop, in order... pass
    CTSQueue test: single thread push/pop, interleaved... pass
    CTSQueue test: sequential push, multithread pop, no affinity...pass
    CTSQueue test: single thread push, multithread pop, no affinity...pass
    CTSQueue test: multithread push, sequential pop, no affinity...pass
    CTSQueue test: multithread push, single thread pop, no affinity...pass
    CTSQueue test: multithread push, multithread pop, no affinity...pass
    CTSQueue test: multithread interleaved push/pop, no affinity...pass
    CTSQueue test: sequential push, multithread pop, distributed...pass
    CTSQueue test: single thread push, multithread pop, distributed...pass
    CTSQueue test: multithread push, sequential pop, distributed...pass
    CTSQueue test: multithread push, single thread pop, distributed...pass
    CTSQueue test: multithread push, multithread pop, distributed...pass
    CTSQueue test: multithread interleaved push/pop, distributed...pass
    Tests done, purging test memory...done

    Testing 2 threads:
    CTSList test: single thread push/pop, in order... pass
    CTSList test: single thread push/pop, interleaved... pass
    CTSList test: sequential push, multithread pop, no affinity...pass
    CTSList test: single thread push, multithread pop, no affinity...pass
    CTSList test: multithread push, sequential pop, no affinity...pass
    CTSList test: multithread push, single thread pop, no affinity...pass
    CTSList test: multithread push, multithread pop, no affinity...pass
    CTSList test: multithread interleaved push/pop, no affinity...pass
    CTSList test: sequential push, multithread pop, distributed...pass
    CTSList test: single thread push, multithread pop, distributed...pass
    CTSList test: multithread push, sequential pop, distributed...pass
    CTSList test: multithread push, single thread pop, distributed...pass
    CTSList test: multithread push, multithread pop, distributed...pass
    CTSList test: multithread interleaved push/pop, distributed...pass

    Testing 4 threads:
    CTSList test: single thread push/pop, in order... pass
    CTSList test: single thread push/pop, interleaved... pass
    CTSList test: sequential push, multithread pop, no affinity...pass
    CTSList test: single thread push, multithread pop, no affinity...pass
    CTSList test: multithread push, sequential pop, no affinity...pass
    CTSList test: multithread push, single thread pop, no affinity...pass
    CTSList test: multithread push, multithread pop, no affinity...pass
    CTSList test: multithread interleaved push/pop, no affinity...pass
    CTSList test: sequential push, multithread pop, distributed...pass
    CTSList test: single thread push, multithread pop, distributed...pass
    CTSList test: multithread push, sequential pop, distributed...pass
    CTSList test: multithread push, single thread pop, distributed...pass
    CTSList test: multithread push, multithread pop, distributed...pass
    CTSList test: multithread interleaved push/pop, distributed...pass
    Tests done, purging test memory...done
    ThreadPoolTest: Job distribution speed
    ThreadPoolTest:   NOT to completion
    ThreadPoolTest:     Non-distribute
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 4000 (4000) jobs processed in 14.540510ms, 0.000121ms to suspend (0.003635/0.003635) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 13.827848ms, 0.000099ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 14.112061ms, 0.000084ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 14.249906ms, 0.000251ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 13.986922ms, 0.000286ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 14.567649ms, 0.000147ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 15.044790ms, 0.000126ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 14.242330ms, 0.000182ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 14.867997ms, 0.000244ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 15.650580ms, 0.000271ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 16.162694ms, 0.000249ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 16.047820ms, 0.000300ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep -10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 15.693098ms, 0.000715ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 14.159820ms, 0.000446ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 15.308517ms, 0.000598ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 16.376081ms, 0.000580ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 16.324083ms, 0.000509ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 15.023115ms, 0.000738ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 16.405169ms, 0.000435ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 15.050575ms, 0.000608ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 16.127151ms, 0.000574ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 15.881634ms, 0.000737ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 15.840338ms, 0.000614ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 17.741101ms, 0.008225ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:     Distribute
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 4000 (4000) jobs processed in 15.756236ms, 0.000157ms to suspend (0.003939/0.003939) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 14.176467ms, 0.000194ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 14.327793ms, 0.000212ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 15.769738ms, 0.000132ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 17.511458ms, 0.000231ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 15.507633ms, 0.000292ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 14.526792ms, 0.000224ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 15.105385ms, 0.000183ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 14.910221ms, 0.000225ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 14.677172ms, 0.000201ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 15.899655ms, 0.000304ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 15.825037ms, 0.000118ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep -10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 14.325932ms, 0.000465ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 15.054373ms, 0.000512ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 15.531627ms, 0.000666ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 15.563478ms, 0.000575ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 15.853493ms, 0.000647ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 15.481148ms, 0.000465ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 15.447769ms, 0.000675ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 15.586225ms, 0.000913ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 14.988083ms, 0.000714ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 16.306920ms, 0.001047ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 17.797023ms, 0.000833ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 16.499123ms, 0.000569ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:     NO Sleep
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 4000 (4000) jobs processed in 0.336548ms, 0.000053ms to suspend (0.000084/0.000084) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025678ms, 0.000048ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025391ms, 0.000053ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.025699ms, 0.000059ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025638ms, 0.000050ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025435ms, 0.000058ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025565ms, 0.000054ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.025440ms, 0.000056ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025521ms, 0.000051ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025518ms, 0.000054ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025482ms, 0.000054ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.025716ms, 0.000054ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep -10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025494ms, 0.000205ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025543ms, 0.000223ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025325ms, 0.000229ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.025842ms, 0.000217ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.038731ms, 0.000298ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.040394ms, 0.000448ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.027510ms, 0.000262ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.025457ms, 0.000243ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025454ms, 0.000226ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025776ms, 0.000207ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025562ms, 0.000218ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.025942ms, 0.000220ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:     Distribute NO Sleep
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 4000 (4000) jobs processed in 0.328272ms, 0.000091ms to suspend (0.000082/0.000082) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.039734ms, 0.000073ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025598ms, 0.000053ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.032157ms, 0.000048ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025579ms, 0.000053ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025822ms, 0.000056ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025317ms, 0.000050ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.025576ms, 0.000049ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025742ms, 0.000055ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025706ms, 0.000055ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025742ms, 0.000055ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.025641ms, 0.000055ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep -10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025714ms, 0.000202ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025558ms, 0.000226ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025592ms, 0.000229ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.029938ms, 0.000220ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025629ms, 0.000214ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025532ms, 0.000246ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.025746ms, 0.000236ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.038387ms, 0.000313ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.025794ms, 0.000250ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.025718ms, 0.000234ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.026331ms, 0.000221ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.026618ms, 0.000213ms to suspend (inf/inf) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:   To completion
    ThreadPoolTest:     Non-distribute
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 4000 (4000) jobs processed in 15.725574ms, 0.000155ms to suspend (0.003931/0.003931) [ (main) 4000, 0, 0, 0, 0, 0, 0, 0, 0]

     

    Windows

    Quote

    Testing 2 threads:
    CTSQueue test: single thread push/pop, in order... pass
    CTSQueue test: single thread push/pop, interleaved... pass
    CTSQueue test: sequential push, multithread pop, no affinity...pass
    CTSQueue test: single thread push, multithread pop, no affinity...pass
    CTSQueue test: multithread push, sequential pop, no affinity...pass
    CTSQueue test: multithread push, single thread pop, no affinity...pass
    CTSQueue test: multithread push, multithread pop, no affinity...pass
    CTSQueue test: multithread interleaved push/pop, no affinity...pass
    CTSQueue test: sequential push, multithread pop, distributed...pass
    CTSQueue test: single thread push, multithread pop, distributed...pass
    CTSQueue test: multithread push, sequential pop, distributed...pass
    CTSQueue test: multithread push, single thread pop, distributed...pass
    CTSQueue test: multithread push, multithread pop, distributed...pass
    CTSQueue test: multithread interleaved push/pop, distributed...pass

    Testing 4 threads:
    CTSQueue test: single thread push/pop, in order... pass
    CTSQueue test: single thread push/pop, interleaved... pass
    CTSQueue test: sequential push, multithread pop, no affinity...pass
    CTSQueue test: single thread push, multithread pop, no affinity...pass
    CTSQueue test: multithread push, sequential pop, no affinity...pass
    CTSQueue test: multithread push, single thread pop, no affinity...pass
    CTSQueue test: multithread push, multithread pop, no affinity...pass
    CTSQueue test: multithread interleaved push/pop, no affinity...pass
    CTSQueue test: sequential push, multithread pop, distributed...pass
    CTSQueue test: single thread push, multithread pop, distributed...pass
    CTSQueue test: multithread push, sequential pop, distributed...pass
    CTSQueue test: multithread push, single thread pop, distributed...pass
    CTSQueue test: multithread push, multithread pop, distributed...pass
    CTSQueue test: multithread interleaved push/pop, distributed...pass

    Testing 8 threads:
    CTSQueue test: single thread push/pop, in order... pass
    CTSQueue test: single thread push/pop, interleaved... pass
    CTSQueue test: sequential push, multithread pop, no affinity...pass
    CTSQueue test: single thread push, multithread pop, no affinity...pass
    CTSQueue test: multithread push, sequential pop, no affinity...pass
    CTSQueue test: multithread push, single thread pop, no affinity...pass
    CTSQueue test: multithread push, multithread pop, no affinity...pass
    CTSQueue test: multithread interleaved push/pop, no affinity...pass
    CTSQueue test: sequential push, multithread pop, distributed...pass
    CTSQueue test: single thread push, multithread pop, distributed...pass
    CTSQueue test: multithread push, sequential pop, distributed...pass
    CTSQueue test: multithread push, single thread pop, distributed...pass
    CTSQueue test: multithread push, multithread pop, distributed...pass
    CTSQueue test: multithread interleaved push/pop, distributed...pass
    Tests done, purging test memory...done

    Testing 2 threads:
    CTSList test: single thread push/pop, in order... pass
    CTSList test: single thread push/pop, interleaved... pass
    CTSList test: sequential push, multithread pop, no affinity...pass
    CTSList test: single thread push, multithread pop, no affinity...pass
    CTSList test: multithread push, sequential pop, no affinity...pass
    CTSList test: multithread push, single thread pop, no affinity...pass
    CTSList test: multithread push, multithread pop, no affinity...pass
    CTSList test: multithread interleaved push/pop, no affinity...pass
    CTSList test: sequential push, multithread pop, distributed...pass
    CTSList test: single thread push, multithread pop, distributed...pass
    CTSList test: multithread push, sequential pop, distributed...pass
    CTSList test: multithread push, single thread pop, distributed...pass
    CTSList test: multithread push, multithread pop, distributed...pass
    CTSList test: multithread interleaved push/pop, distributed...pass

    Testing 4 threads:
    CTSList test: single thread push/pop, in order... pass
    CTSList test: single thread push/pop, interleaved... pass
    CTSList test: sequential push, multithread pop, no affinity...pass
    CTSList test: single thread push, multithread pop, no affinity...pass
    CTSList test: multithread push, sequential pop, no affinity...pass
    CTSList test: multithread push, single thread pop, no affinity...pass
    CTSList test: multithread push, multithread pop, no affinity...pass
    CTSList test: multithread interleaved push/pop, no affinity...pass
    CTSList test: sequential push, multithread pop, distributed...pass
    CTSList test: single thread push, multithread pop, distributed...pass
    CTSList test: multithread push, sequential pop, distributed...pass
    CTSList test: multithread push, single thread pop, distributed...pass
    CTSList test: multithread push, multithread pop, distributed...pass
    CTSList test: multithread interleaved push/pop, distributed...pass

    Testing 8 threads:
    CTSList test: single thread push/pop, in order... pass
    CTSList test: single thread push/pop, interleaved... pass
    CTSList test: sequential push, multithread pop, no affinity...pass
    CTSList test: single thread push, multithread pop, no affinity...pass
    CTSList test: multithread push, sequential pop, no affinity...pass
    CTSList test: multithread push, single thread pop, no affinity...pass
    CTSList test: multithread push, multithread pop, no affinity...pass
    CTSList test: multithread interleaved push/pop, no affinity...pass
    CTSList test: sequential push, multithread pop, distributed...pass
    CTSList test: single thread push, multithread pop, distributed...pass
    CTSList test: multithread push, sequential pop, distributed...pass
    CTSList test: multithread push, single thread pop, distributed...pass
    CTSList test: multithread push, multithread pop, distributed...pass
    CTSList test: multithread interleaved push/pop, distributed...pass
    Tests done, purging test memory...done
    ThreadPoolTest: Job distribution speed
    ThreadPoolTest:   NOT to completion
    ThreadPoolTest:     Non-distribute
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (3) jobs processed in 0.714909ms, 0.011514ms to suspend (0.238303/1.#INF00) [ (main) 0, 3, 0, 0, 0, 0, 0, 0, 0]
    Attempted to add job to job queue that has already been completed
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.282616ms, 0.018259ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.100116ms, 0.025955ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.102533ms, 0.036134ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.104017ms, 0.009464ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.098194ms, 0.016952ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.100315ms, 0.026059ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.102507ms, 0.036015ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.095878ms, 0.009671ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.097990ms, 0.017121ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.100266ms, 0.026089ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.102538ms, 0.038719ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep -10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.094030ms, 0.011120ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.093972ms, 0.019758ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.099419ms, 0.027741ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.094244ms, 0.037491ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.094052ms, 0.011125ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.094116ms, 0.019957ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.094111ms, 0.027997ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.094046ms, 0.037634ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.094015ms, 0.011246ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.093980ms, 0.020889ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.093875ms, 0.027756ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.094134ms, 0.037158ms to suspend (1.#INF00/1.#INF00) [ (main) 3, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:     Distribute
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (1) jobs processed in 0.550529ms, 0.006431ms to suspend (0.550529/1.#INF00) [ (main) 0, 1, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.097904ms, 0.016897ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.100067ms, 0.026628ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.102503ms, 0.035878ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.095783ms, 0.006421ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.098046ms, 0.017110ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.100425ms, 0.026308ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.111229ms, 0.036234ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.095566ms, 0.006104ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.097960ms, 0.016767ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.100096ms, 0.026755ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.106062ms, 0.036583ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep -10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.095994ms, 0.012179ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.093865ms, 0.021252ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.094874ms, 0.028252ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.093904ms, 0.038102ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.093820ms, 0.012261ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.093909ms, 0.041370ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.094051ms, 0.028115ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.093982ms, 0.037663ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.094091ms, 0.012820ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.093905ms, 0.021282ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.093912ms, 0.028124ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.094206ms, 0.037462ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:     NO Sleep
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (1) jobs processed in 0.541596ms, 0.006381ms to suspend (0.541596/1.#INF00) [ (main) 0, 1, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.038105ms, 0.062844ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.084418ms, 0.043070ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.069527ms, 0.036421ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.035457ms, 0.009688ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.037990ms, 0.017023ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.040000ms, 0.026354ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.066583ms, 0.035821ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.035517ms, 0.009769ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.064824ms, 0.016824ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.086525ms, 0.044440ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.127173ms, 0.051773ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep -10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.033628ms, 0.011283ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.050328ms, 0.020374ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.033526ms, 0.100385ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.033623ms, 0.148395ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.033636ms, 0.011352ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.033679ms, 0.051808ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.033638ms, 0.056821ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.033681ms, 0.063080ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.033602ms, 0.011355ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.033709ms, 0.021385ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.033689ms, 0.074278ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.033511ms, 0.200861ms to suspend (1.#INF00/1.#INF00) [ (main) 1, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:     Distribute NO Sleep
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.564103ms, 0.053300ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.204297ms, 0.132525ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.089459ms, 0.186706ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.089419ms, 0.068286ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.035572ms, 0.009654ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.066074ms, 0.017006ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.039890ms, 0.026672ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.042537ms, 0.036192ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.035367ms, 0.009810ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.037723ms, 0.016789ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.040022ms, 0.026132ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.077053ms, 0.035659ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep -10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.033547ms, 0.012471ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.033750ms, 0.020155ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.033714ms, 0.070854ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.033741ms, 0.092625ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 0, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.033574ms, 0.021567ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.053227ms, 0.061745ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.033537ms, 0.073486ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.033719ms, 0.076525ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         Testing! Sleep 10, interleave 1, prioritized 0 
    ThreadPoolTest:         1 threads -- 0 (0) jobs processed in 0.033633ms, 0.062313ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         3 threads -- 0 (0) jobs processed in 0.033714ms, 0.061330ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         5 threads -- 0 (0) jobs processed in 0.033664ms, 0.049557ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:         7 threads -- 0 (0) jobs processed in 0.033729ms, 0.063686ms to suspend (1.#INF00/1.#INF00) [ (main) 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ThreadPoolTest:   To completion
    ThreadPoolTest:     Non-distribute
    ThreadPoolTest:         Testing! Sleep -10, interleave 0, prioritized 0 
    ThreadPoolTest:         1 threads -- 4000 (4000) jobs processed in 5.049464ms, 0.024500ms to suspend (0.001262/0.001268) [ (main) 0, 4000, 0, 0, 0, 0, 0, 0, 0]

     

    Thanks.

  7. Update

    I've discovered some commands with very interesting results. Basically, what I am trying to do right now is limit my Window's server to only one thread. However, the only way I can do that is with -thread 1 in the command line. This is not the case with Linux (keep reading!).

     

    Windows configuration

    Quote

    sv_stressbots 0
    bot_quota 34
    bot_difficulty 2
    mp_limitteams 0
    net_splitrate 4
    sm_cvar net_maxcleartime 0.001
    sv_maxupdaterate 256
    sm_cvar sv_maxcmdrate 256
    sv_minupdaterate 256
    sv_mincmdrate 256
    sv_occlude_players 0
    occlusion_test_async 0
    bot_join_after_player 0
    sm_cvar bot_flipout 1
    sm_cvar net_queued_packet_thread 0

    sm_cvar threadpool_affinity 0
    sm_cvar host_thread_mode 0
    mat_queue_mode 0

     

    Linux configuration

    Quote

    sv_stressbots 0
    bot_quota 34
    bot_difficulty 2
    mp_limitteams 0
    net_splitrate 4
    sm_cvar net_maxcleartime 0.001
    sv_maxupdaterate 256
    sm_cvar sv_maxcmdrate 256
    sv_minupdaterate 256
    sv_mincmdrate 256
    sv_occlude_players 0
    occlusion_test_async 0
    bot_join_after_player 0
    sm_cvar bot_flipout 1
    sm_cvar net_queued_packet_thread 1
    sm_cvar threadpool_affinity 1
    sm_cvar host_thread_mode 2
    mat_queue_mode 2

     

    The truth is, none of those commands on Windows limits the server to one thread while on my Linux server, if I set occlusion_test_async to 0, it can't use more than one thread.

     

    After looking at my old ConVar list for CS:GO, I discovered two commands with very interesting results:

    • threadpool_reserve - Reserves x amount of threads. This is basically threadpool_cycle_reserve, but with this, you can declare how many extra threads should be reserved. This also includes an argument (x) while threadpool_cycle_reserve does not.
    • threadpool_cycle_reserve - Reserves all the "extra" threads. This basically toggles between reserving the extra threads (e.g. occlusion and networking).

     

    From what I've tested, these commands basically disable any extra threads besides the main thread. However, with threadpool_reserve, I can tell it how many extra threads to disable whereas threadpool_cycle_reserve disables and enables all the extra threads (toggle-like).

     

    So, I've done a lot of testing and I am going to share it here!

     

    Testing - Linux Server

    "threadpool_cycle_reserve" with "occlusion_test_async 0"

    Quote

    17:40:24 threadpool_cycle_reserve

    17:40:24 0 threads being reserved


    17:40:26 threadpool_cycle_reserve
    17:40:26 0 threads being reserved

    Result: Since occlusion_test_async is set to 0 (the only extra thread I am aware of), there are no threads to be reserved or unreserved.

     

     

    "threadpool_cycle_reserve" with "occlusion_test_async 1"

    Quote

    17:42:05 threadpool_cycle_reserve
    17:42:05 1 threads being reserved


    17:42:10 threadpool_cycle_reserve
    17:42:10 0 threads being reserved

    Result: Since occlusion_test_async was set to 1, this command "reserved" the so-called "occlusion" (not "network") thread. After sending the command again, it unreserved the extra thread (why it says 0 reserved).

     

    Testing - Windows Server

    "threadpool_cycle_reserve" with "occlusion_test_async 0"

    Quote

    17:49:47 threadpool_cycle_reserve
             2 threads being reserved


    17:49:52 threadpool_cycle_reserve
             0 threads being reserved

    Result: This is now disabling TWO extra threads. I would assume this includes the occlusion thread along with the networking thread. However, there is no proof. This is proof that "occlusion_test_async 0" has absolutely no effect on Windows servers and doesn't "stop" an extra thread (I explained this at the beginning of the thread).

     

    "threadpool_cycle_reserve" with "occlusion_test_async 1"

    Quote

    17:52:35 threadpool_cycle_reserve
             2 threads being reserved


    17:52:36 threadpool_cycle_reserve
             0 threads being reserved

    Result: The same results as "occlusion_test_async" at 0 since again, this command has no effect on Windows servers.

     

    Conclusion

    Linux

    The "networking" thread doesn't appear to be starting in general. All the commands that encourages the server to support multi-threading aren't working with the networking thread. I will continue to look for more commands and see if they somehow "start" the networking thread.

     

    Windows

    There's clearly two extra threads being started and the only way I can disable them is with -threads 1 in the command-line. Occlusion_test_async doesn't have any effect on Windows servers while it does on Linux servers. I've also tried multiple commands that discourage multi-threading and I cannot stop the networking thread without reserving the threads.

     

    I've also done testing on CS:S, however, I haven't been able to use the networking thread.

     

    Thanks.

×
×
  • Create New...