Jump to content

freghar

Members
  • Posts

    461
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by freghar

  1. All forks do initially share git objects, thus they take up ~0 additional space when created.

    Anyway, I actually wrote an email (about a year ago) to github maintainers regarding this issue and the reply was something like "we don't like to delete repos, but excluding them from the network graph is a nice idea" .. well, I guess it was never really implemented.

    And yes, I did mention those forks are useless ones without even a single push.

  2. I'm sorry for the downtime of all those mirrors + the SD2 git mirror, I have - however - major problems setting up my new machine. First, there was an unnoticed known_hosts error, which caused the update script to fail for the last ~7days before I recognized it.

    Since all the services were moving to a new machine, I decided to solve this problem once I have all the things moved (it was supposed to happen in ~5 days after move). I managed to set-up the new machine fine, everything went okay, hardware tests as well, then I noticed a strange "silent data corruption" on both hard drives in RAID1. Simply said almost no file could be read twice with the same md5 hash. I'm still investigating it.

    This said, I'm going back to the old hardware - for a while. The repo updating script should be up-and-running today/tomorrow.

  3. I use this two config by default in all my linux systems :P :

    kernel.core_pattern = core.%p -> Is use to set the default format of coredump: core:%p = core.pid, or core.%e = core.filename

    kernel.sem = 512 32000 100 512 -> Is for set a custom limit on kernel semaphores ("Semaphores can best be described as counters which are used to provide synchronization between processes or between threads within a process for shared resources like shared memories"), i never sure if a application need more limits in semaphores or not (ORACLE OR SAP for example need custom config too)... and i always up the default parameters for avoid system crashes.

    max number of arrays = 512

    max semaphores per array = 32000

    max semaphores system wide = 100

    max ops per semop call = 512

    Best Regards

    Careful about defaults - mysql doesn't need this specific line to "use the defaults" - it can even cause slowdowns/crashes whenever the defaults change (and you forget to update the line).

  4. 1. MaNGOS has absolutely nothing to do with LUA..

    That's true.

    if you want to implement it, implement it to ScriptDev2 ( i.e. go over to their forum and start this thread...)

    ScriptDev2 is a C++ scripting library, LUA could be *just* another scripting library, mangos can run with any scripting library you create, not just with SD2. The (most likely) correct way of LUA implementation would be to write a small translational C/C++ library for mangos and implement all LUA processing above it, using this C/C++ piece of code as an abstract layer. Inserting "run my all-in-LUA script library" code into mangos itself is not that clean.

  5. Let's do it in another way. Let's kick users that only stay on the login screen more then 5 minutes. :)

    I know mangos keeps tracks of them and should not be hard to implement.

    That should be - in fact- blizzlike:

    # You'll be logged off and sent to the character selection screen if you are AFK for 30 minutes.

    # You'll be disconnected from the server if you remain at the character selection screen for 30 minutes.

    (a config option would be nice)

  6. Because you use a controller that enhance RAID 1 for read data like RAID0, it's not the standard of RAID1 and all controllers does'nt have this enhance. I'm not a troll, I referred to standard, your choice is good only for somes RAID controllers, it's not really RAID1. I quote Wikipedia only for more informations and explaination about RAID.

    Well the original post was based more on functionality than theory. It's true that "standard" RAID1 is just dumb mirror, but that's only theory, nothing more. You can connect two drives to some very simple hub and duplicate every single I/O voltage change the motherboard sends (and vice versa) - in which case you're gonna have even slower access.

    My "version" of RAID1 is really RAID1 - the data are stored as RAID1 specifies, there are no stripes (unlike RAID10). If you mount the mirrored partition via mount(8), it'll behave as you would expect it to.

    Wikipedia says

    RAID 1 mirrors the contents of the disks, making a form of 1:1 ratio realtime backup. The contents of each disk in the array are identical to that of every other disk in the array. A RAID 1 array requires a minimum of two drives. Although RAID 1's writing process copies the data identically to all drives, a RAID 1 mirror would not be suitable as a permanent backup solution since RAID architecture by design allows for certain failures to take place (e.g., vandalism or accidental file deletion).

    -- which doesn't conflict with anything the FreeBSD driver does. It simply uses smart I/O scheduling to read from more drives simultaneously.

    Furthermore I can't find any RFC on RAID / RAID1, is there any? Where do you take this "standard" from? Even http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_1_performance actually DOES mention the performance boost.

  7. A nice example of what not-so-well documented code can cause .. is trinity project. I've heard rumors about duplicated functions doing the same thing, misusing some of the subsystems, crashes and "hacks", just "because they can't understand the code". A good documentation would help to drastically reduce such things.

    However there's no documentation how *something* should be implemented, no publicly-available policy for changing files and adding "hacks", both projects do it the way they like it (because nobody knows how "the other side" does it) - which results in great incompatibilities between both projects. This might be intentional, but I believe it isn't.

  8. RAID 0 is designed for performance, RAID 1 for backups: RAID 1 don't give performances, it have the same of normal disk. RAID0 read the data simultaneous on all disks in the array, the seeking time is compensed by gain and you have only seeking if the file is fragmented, also on SSD disk you are no seeking time.

    The default of RAID 0 is if one disk break, all data is loss.

    RAID 5 combine the advantage of RAID 0 and RAID 1: the data is stripped and mirrored, total you lose the space of one disk of the array; it is good if you have several disks (minimum 3). RAID 6 is RAID 5 in more secure.

    With four disks you have RAID 1+0 or 0+1 (RAID 10 is most).

    The default of RAID 5/6 is the parity calculation, so a good RAID hardware is good for RAID performance (better than software).

    With six disks or more, RAID 50 is good.

    http://en.wikipedia.org/wiki/RAID

    I knew there will be always trolls quoting wikipedia. Maaan, think a bit! World isn't that easy as RAID1 = slow and RAID0 = double performance.

    see http://www.tomshardware.co.uk/forum/250390-14-does-raid-increase-read-speed - there's also a guy quoting wikipedia + replies to his post

    I personally own a FreeBSD storage server (well, not "I", but the company I work for) and can confirm the "RAID1 is faster for read than RAID0".

    edit: And about RAID 4/5/6 - it's true the read is stripped, so it might achieve read performance similar to RAID0, but write performance is a lot slower - thanks to parity recalculations.

  9. Lua is not good for coding AI's. It's just not fast enough. Going through Lua on every creature update cycle for every creature would just be a disaster. This is the primary problem with making a Lua binding: people would use it disasterously and then give mangos QQ when it doesn't work well.

    There are also a few other problems. For example, if you want to store a timer variable in an AI, it would have to be stored outside of Lua anyway, and passed back and forth between AI calls, only further slowing things down.

    Lua's only realistic use would be for GO/item use, gossip scripts, and other such "one-shot" functions. I was considering making an interface that supported these functions. If there is actual interest I might consider giving it a shot.

    To code AI's: use C++, use EventAI, or don't.

    Do you really believe it's _THAT_ way slower? Have you done any C++ vs LUA vs Python benchmarks? I assume you know that LUA doesn't need to compile the code each time it's executed.

    I know this kind of topic is here somewhat often, but I'd really like to see some benchmarks if anyone has done any.

  10. Just a note about disk I/O - RAID4/5/6 isn't about performance, it's about space. For read performance, RAID1 (or any combination 1+0 / 0+1) wins.

    RAID1 can be theoretically (and is) even faster than RAID0 - the reads aren't limited to some stripes, driver can stripe the reading dynamically (ie. it can read last 1KB of some file from the same drive, without the need of seeking and reading it from the second one). It can even reach ~70% of RAID0 write performance - just by writing to both drives independently and syncing data+metadata during idle states.

    None of this is currently in the Linux MD driver (it was, I dunno why they disabled it), it can't read from several RAID1 drives in parallel. On the other side, FreeBSD can - it has even several policies for that.

    If you need a LOT of drives, you can go for RAID 0+1 with HDDs in couples of 2 drives (forming RAID1). So the setup would be simply RAID0 spanning over <insert value here> RAID1 arrays. When one of the drives fail, simply replace it (or use a spare one) and resync just the small piece.

    And about network - if one Gbit connection isn't enough, you can always use two or more cards on each machine and do some form of load balancing (there are IIRC kernel patches for it as well). You, of course, need to use several DB connections to benefit from that - I don't know if mangos supports that.

  11. Since configure.ac definitely is tracked by git, ignoring it has no effect according to that.

    You're right, I forgot about that.

    that's what distributed version control was invented for in the first place, because people were sick of having dozens of loose patch files

    Believe it or not, most of those people actually prefer to "have dozens of patch files", just because it's easier for their brains.

  12. Can't he also use ignore to tell git to skip over the patch when pulling updates?

    Indeed he can. He can't, however, use classic .gitignore file (because it's tracked, so he would need to commit it anyway).

    The solution is to use .git/ignore file in the repo dir itself. At least AFAIK.

  13. That's still a join ;) Just do a describe, you'll see it still refs both tables.

    AFAIK nested SELECT and a JOIN is something a bit different - looks like the nested SELECT is done each time for each column selected via FROM - at least from the time estimate.

    And the JOIN performance issue isn't as obvious as it might look like. Today's storage engines are more optimized for using JOINs, they cache references. Think about the fragmentation - rows aren't stored on the disk as they appear in your DB browser, reading one superlong row (which is done each time, even if you SELECT only one column) from (possibly) many fragments and wasting many pages of cache can be slower than using one or two JOINs, especially on tables using proper indexes.

    Moreover, the fragmentation occur both on file level and on DB level (ie. longtext dynamic size columns).

    See http://getmangos.eu/wiki/Development_ideas - database section ... doing too many JOINs isn't good, keeping all in one table is not good as well.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use