Jump to content
  • 0

Does Cpu Strength Mean Much When Dealing With L2Off?


Question

Recommended Posts

  • 0
Posted

You can host it in nahaleem or anything. In any case c4 was built on 2005~ and guess what cpu's they used back then. However, what matters most is IOPS and ram.

  • 0
Posted

You can host it in nahaleem or anything. In any case c4 was built on 2005~ and guess what cpu's they used back then. However, what matters most is IOPS and ram.

Fair enough; does 1TB SSD with no raid sound adequate? or should i go with 2x 512GB SSD and raid?

  • 0
Posted

Fair enough; does 1TB SSD with no raid sound adequate? or should i go with 2x 512GB SSD and raid?

Ofc raid for safety.
  • 0
Posted

Ofc raid for safety.

 

Do you actually know that there are raid configurations that do exactly the opposite than increasing safety? Raid zero for instance. The correct answer would be go 2x512 @ Raid 1

  • 0
Posted (edited)

Do you actually know that there are raid configurations that do exactly the opposite than increasing safety? Raid zero for instance. The correct answer would be go 2x512 @ Raid 1

I didn't mention because is clearly that only raid 1 is good for backup option. Raid 0 is excluded in this case. Specially when opening a live server. Well if you want raid 0 is ok but i realy don't recommand. Edited by xeL
  • 0
Posted

Actually raid 0 splits the calculations performed on each drive. Which, incase we have 2 drives, halves the operations of each one and therefore the lifetime expectancy may also be double. Regarding live servers, what you seek is speed. You shouldn't look for "safety" on drives, since the biggest downtime expected is the changing of the failed drive.

 

The solution to security is called "cloud remote backup" of the database, plus monitoring in case of ssds since they degrade before failing.

 

RAID1 helps avoiding downtimes in case of drive failure, but don't rely your server on local-only "security".

  • 0
Posted

Actually raid 0 splits the calculations performed on each drive. Which, incase we have 2 drives, halves the operations of each one and therefore the lifetime expectancy may also be double. Regarding live servers, what you seek is speed. You shouldn't look for "safety" on drives, since the biggest downtime expected is the changing of the failed drive.

 

The solution to security is called "cloud remote backup" of the database, plus monitoring in case of ssds since they degrade before failing.

 

RAID1 helps avoiding downtimes in case of drive failure, but don't rely your server on local-only "security".

I still recommand sas . l2 off works ok on all. The diferance will be on loading and not on game play. That why recommand it raid 1 anyway is up to him . He can use even 1 ssd with cloud db backup.
  • 0
Posted

SAS are speed oriented HDDs.

 

Storage drives are all about their lifespan,speed and capacity.

 

SAS are speed oriented HDDs with the same lifespan as normal HDDs, their capacity is low tho, sometimes lower than SSDs and their speed is way lower than SSDs, not to mention the ridiculus price of them at 2k15.

 

If the setup is to be a RAID1 array, then SAS are worthless in case of server leasing. While you lease a server you don't care for how many failed drives you have as they are replaced for free as long as you use the leased server. So, as long as you don't have both drives failed which can be achieved easily by monitoring the errors,health on S.M.A.R.T., you won't have any downtime at all, because when you replace a drive the other one copies itself to the new while the server runs!

 

SAS may only be usefull due to their longer lifespan when you OWN the server hardware to avoid getting new drives.

 

My 2 cents.

 

 

(lease means rent or whatever is widely called)

  • 0
Posted

SAN + Raid 5 if you got money to spend.

Otherwise, Raid 1 is quite alright with 2x SAS or just 2x normal HDD.

 

Also to be on the safe side, cloud storage backups for database.

If you use ESXi I'd recommend setting up daily snapshots of the VM which stores it on another datastore than the vmdk.

  • 0
Posted

SAN + Raid 5 if you got money to spend.

Otherwise, Raid 1 is quite alright with 2x SAS or just 2x normal HDD.

 

Also to be on the safe side, cloud storage backups for database.

If you use ESXi I'd recommend setting up daily snapshots of the VM which stores it on another datastore than the vmdk.

Regarding SAN, no comment at all.

 

Any virtualization is a DON'T!

Virtual enviroment has limitations in kernel and it may cause issues!

Learned it the hard way.

  • 0
Posted

Regarding SAN, no comment at all.

 

Any virtualization is a DON'T!

Virtual enviroment has limitations in kernel and it may cause issues!

Learned it the hard way.

 

I work in IT infrastructure, if you use proper virtual environments then it shouldn't be a problem.

Now this is not related to L2 at all.

 

Currently got over 500 virtual servers, anything from high traffic APP servers to high CPU/RAM consuming databases... list goes on and on, no issues at all.

Actually virtual hardware works more efficient than if you ran everything off the physical server.

 

It all depends on the setup and configuration.

  • 0
Posted

I'm not here to doubt your work or anything, neither to discuss it much.

We're talking l2 setup here and people tend to look for plug&play solutions with minimal configuration, so, my suggestion is to always use remote backup and fastest speeds because you don't pay for replacement drives.. If raid1 is possible then use it, it will help avoiding downtimes.

 

That's all.

  • 0
Posted

I'm not here to doubt your work or anything, neither to discuss it much.

We're talking l2 setup here and people tend to look for plug&play solutions with minimal configuration, so, my suggestion is to always use remote backup and fastest speeds because you don't pay for replacement drives.. If raid1 is possible then use it, it will help avoiding downtimes.

 

That's all.

 

Hehe it kinda went out of topic there didn't it :) 

 

I agree with using Raid 1 in this case though. 

And as I mentioned before, backing up daily db dump to cloud isn't a bad idea either.

Guest
This topic is now closed to further replies.


  • Posts

    • hello, i want to wtt my charracter in l2elmorelab 1x harbor for 1.5kkk adena in l2reborn 10x new. Or if you interested tell me your offer. :)) Clean Mail 30 lvl Cleric Naked   Updated.
    • package ai.npc.NFWalker; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import l2r.gameserver.enums.CtrlIntention; import l2r.gameserver.model.Location; import l2r.gameserver.model.actor.L2Npc; import l2r.gameserver.model.quest.Quest; import l2r.gameserver.network.clientpackets.Say2; import l2r.gameserver.network.serverpackets.NpcSay; public class NFWalkerAI extends Quest { private static final int WALKER_NPC_ID = 20116; private final Map<String, Route> routes = new HashMap<>(); private final Map<Integer, Integer> npcIndexes = new HashMap<>(); private final Map<Integer, Boolean> npcReverse = new HashMap<>(); private final Map<Integer, String> npcCurrentRoute = new HashMap<>(); public NFWalkerAI() { super(-1, NFWalkerAI.class.getSimpleName(), "ai/npc/NFWalker"); loadRoutes(); addSpawnId(WALKER_NPC_ID); } private void loadRoutes() { // Route 1 Data Route route1 = new Route("route1"); route1.addPoint(new RoutePoint(0, 149363, 172341, -941, 0, false, "")); route1.addPoint(new RoutePoint(1, 148568, 172328, -980, 5, true, "Puff")); route1.addPoint(new RoutePoint(2, 148536, 172792, -980, 0, false, "")); // Route 2 Data Route route2 = new Route("route2"); route2.addPoint(new RoutePoint(0, 149363, 172341, -941, 0, false, "")); route2.addPoint(new RoutePoint(1, 150248, 172328, -980, 5, true, "Rise my children! Bring me the servants of the god! Let them be offered to our god Bifrons!")); route2.addPoint(new RoutePoint(2, 150248, 172776, -980, 0, false, "")); // Add routes to the map routes.put("route1", route1); routes.put("route2", route2); } @Override public String onSpawn(L2Npc npc) { if (npc.getId() == WALKER_NPC_ID) { selectInitialRouteForNpc(npc); } return super.onSpawn(npc); } @Override public String onAdvEvent(String event, L2Npc npc, l2r.gameserver.model.actor.instance.L2PcInstance player) { if (event.equalsIgnoreCase("move")) { moveNpc(npc); } else if (event.equalsIgnoreCase("check_reached")) { checkIfReached(npc); } return null; } private void moveNpc(L2Npc npc) { String routeName = npcCurrentRoute.get(npc.getObjectId()); Route route = routes.get(routeName); Integer pointIndex = npcIndexes.get(npc.getObjectId()); if (route != null && pointIndex != null) { RoutePoint point = route.getPoints().get(pointIndex); if (point.isRun()) { npc.setRunning(); } else { npc.setWalking(); } if (!point.getChat().isEmpty()) { npc.broadcastPacket(new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getId(), point.getChat())); } npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(point.getX(), point.getY(), point.getZ())); // Log movement intention System.out.println("NPC " + npc.getObjectId() + " moving to " + point.getX() + ", " + point.getY() + ", " + point.getZ()); // Schedule a check to see if the NPC has reached its destination startQuestTimer("check_reached", 1000, npc, null); } } private void checkIfReached(L2Npc npc) { String routeName = npcCurrentRoute.get(npc.getObjectId()); Route route = routes.get(routeName); Integer pointIndex = npcIndexes.get(npc.getObjectId()); if (route != null && pointIndex != null) { RoutePoint point = route.getPoints().get(pointIndex); Location currentLocation = npc.getLocation(); Location targetLocation = new Location(point.getX(), point.getY(), point.getZ()); // Check if the NPC has reached the target location if (currentLocation.equals(targetLocation)) { // Log that the NPC has reached the target System.out.println("NPC " + npc.getObjectId() + " reached target " + targetLocation); // Schedule the next movement startQuestTimer("move", point.getDelay() * 1000, npc, null); if (!npcReverse.get(npc.getObjectId())) { pointIndex++; if (pointIndex >= route.getPoints().size()) { npcReverse.put(npc.getObjectId(), true); pointIndex = route.getPoints().size() - 1; } } else { pointIndex--; if (pointIndex < 0) { npcReverse.put(npc.getObjectId(), false); pointIndex = 0; // Choose a new route after completing the current one in both directions switchRouteForNpc(npc); return; } } npcIndexes.put(npc.getObjectId(), pointIndex); } else { // Check again after 1 second startQuestTimer("check_reached", 1000, npc, null); } } } private void selectInitialRouteForNpc(L2Npc npc) { // Randomly select either route1 or route2 String selectedRouteName = "route" + (new Random().nextInt(2) + 1); npcCurrentRoute.put(npc.getObjectId(), selectedRouteName); npcIndexes.put(npc.getObjectId(), 0); npcReverse.put(npc.getObjectId(), false); startQuestTimer("move", 5000, npc, null); // Log initial route selection System.out.println("NPC " + npc.getObjectId() + " selected initial route " + selectedRouteName); } private void switchRouteForNpc(L2Npc npc) { String currentRoute = npcCurrentRoute.get(npc.getObjectId()); String newRoute = currentRoute.equals("route1") ? "route2" : "route1"; npcCurrentRoute.put(npc.getObjectId(), newRoute); npcIndexes.put(npc.getObjectId(), 0); npcReverse.put(npc.getObjectId(), false); startQuestTimer("move", 5000, npc, null); // Log route switching System.out.println("NPC " + npc.getObjectId() + " switched to route " + newRoute); } private static class Route { private List<RoutePoint> points = new ArrayList<>(); public Route(String name) { } public void addPoint(RoutePoint point) { points.add(point); } public List<RoutePoint> getPoints() { return points; } } private static class RoutePoint { private int id; private int x, y, z, delay; private boolean run; private String chat; public RoutePoint(int id, int x, int y, int z, int delay, boolean run, String chat) { this.id = id; this.x = x; this.y = y; this.z = z; this.delay = delay; this.run = run; this.chat = chat; } public int getId() { return id; } public int getX() { return x; } public int getY() { return y; } public int getZ() { return z; } public int getDelay() { return delay; } public boolean isRun() { return run; } public String getChat() { return chat; } } } I looking for help, with this, the npc not start to move. Im trying to create, an NPC wich have multiple walk routes basic logic is  random pick a route complite the route  like Route 1 start form zero (0 -> 1 -> 2(or more) -> 1 -> 0) When the npc return to 0, the script should pic the other route and start again.  And if there is a message like point 1 here     "route1.addPoint(new RoutePoint(1, 148568, 172328, -980, 5, true, "Puff"));" The npc should display the chat message. Currently my problem is the npc not moving, but if I manage it to start moving its randomly move between the route 1 and 2 set of coordinates. Currently for me its  a nightmare. I hope anyone can help somhow.
    • We are certainly not an ambulance, but we will definitely cure you of blacklists and empty pockets. Live freely with SX! Each of you will receive a trial version of SX to familiarize yourself with the product, all you have to do is post in this thread
    • qual e o valor pra atualizar o java da soucer ?
  • Topics

×
×
  • Create New...