{"id":6354,"date":"2026-09-29T10:04:33","date_gmt":"2026-09-29T07:04:33","guid":{"rendered":"https:\/\/www.scalahosting.com\/kb\/?p=6354"},"modified":"2026-09-29T10:04:34","modified_gmt":"2026-09-29T07:04:34","slug":"spanel-limits-cgroups-v2","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/kb\/spanel-limits-cgroups-v2\/","title":{"rendered":"We Built Resource Limits on cgroups v2 &#8211; the Same Kernel Tech Containers Run On"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">SPanel enforces per-account limits on CPU, memory, disk throughput, disk IOPS, and processes using Linux control groups (cgroups v2), the same kernel mechanism that container runtimes are built on. A small SPanel service, cpm, places each account&#8217;s processes into its own control group and re-checks once per second. You get that at no additional cost on every ScalaHosting managed VPS, with no separate operating system license.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What are cgroups v2<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A control group (cgroup) is a <strong>kernel feature that groups processes together and caps what the group can consume<\/strong>. Cgroups v2 is the current generation, with a unified hierarchy and per-resource controllers for CPU, memory, disk I\/O, and process count.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is not an SPanel invention &#8211; it ships in the Linux kernel and underpins the container world. When you run a Docker container with a memory cap, that cap <em>is<\/em> a cgroup.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So SPanel points the machinery the industry already trusts for containers at hosting accounts instead; no parallel enforcement engine to learn, audit, or pay for. The kernel holds; SPanel configures.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>One control group per account<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When an account has performance limits set (directly or through a <a href=\"https:\/\/www.scalahosting.com\/kb\/spanel-package-limits-explained\/-limits-explained\/\">package<\/a>), SPanel creates a control group for it and writes the account&#8217;s ceilings in. On the package form&#8217;s Advanced Limits tab, five dials map to four standard cgroups v2 controllers:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Limit (package dial)<\/strong><\/td><td><strong>cgroups v2 controller<\/strong><\/td><td><strong>What happens at the ceiling<\/strong><\/td><\/tr><tr><td>CPU Limit &#8211; 100 means one full core<\/td><td>cpu<\/td><td>Throttled to its share, never killed<\/td><\/tr><tr><td>Memory Limit (MB)<\/td><td>memory<\/td><td>Reclaimed inside that account only; worst case ends its own process<\/td><\/tr><tr><td>Storage Transfer Rate (MB\/s)<\/td><td>io<\/td><td>Queued and slowed to its lane<\/td><\/tr><tr><td>IOPS Limit (operations\/sec)<\/td><td>io<\/td><td>Queued and slowed to its lane<\/td><\/tr><tr><td>Maximum Total Processes<\/td><td>pids<\/td><td>The fork past the cap simply fails<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two rows need a note. The CPU number is a share of a core, not of the server: 100 is one full core, 50 is half a core, 200 is two cores. And the Storage Transfer Rate and IOPS Limit dials govern <em>storage<\/em> traffic, not network bandwidth. ScalaHosting&#8217;s managed VPS plans come with unmetered network traffic; the io controller has nothing to do with that.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-package-kernel-dials-1024x640.webp\" alt=\"We Built Resource Limits on cgroups v2 &#8211; the Same Kernel Tech Containers Run On, One control group per account\" class=\"wp-image-6355\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-package-kernel-dials-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-package-kernel-dials-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-package-kernel-dials-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-package-kernel-dials.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The<\/strong> <strong>cpm<\/strong> <strong>sweep: one second, on purpose<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A control group only contains the processes you put in it, and new processes spawn constantly: every PHP request, cron job, and shell. Something has to keep placing fresh ones into the right account&#8217;s group: cpm, SPanel&#8217;s control-group process manager.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">cpm runs continuously and sweeps once per second: it walks the running processes, identifies which account each belongs to, and assigns it to that account&#8217;s control group. A process that started a moment ago is picked up on the next sweep.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That cadence sets the honesty boundary for the whole feature.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What the sweep promises:<\/strong> any sustained workload (a plugin stuck in a loop, a memory leak climbing all afternoon) is inside its ceilings within about a second of starting, and stays there.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What it does not promise:<\/strong> instantaneous enforcement. A new process runs unconfined for up to a second before its first sweep. For overload that lasts minutes or hours, that horizon is the right call. For sub-second microbursts, it is not a fence, and we won&#8217;t claim it is.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Pull quote:<\/strong> &#8220;The kernel holds the line; our job is to keep every process on the right side of it, once a second, forever.&#8221;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"585\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-full-1024x585.webp\" alt=\"We Built Resource Limits on cgroups v2 &#8211; the Same Kernel Tech Containers Run On, The cpm sweep: one second, on purpose\" class=\"wp-image-6356\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-full-1024x585.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-full-300x171.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-full-767x438.webp 767w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-full.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Want to see these dials on a live server?<\/strong> Every limit here ships with SPanel on a ScalaHosting managed VPS, with no separate operating-system license. Set them for a whole plan in the package form, or for one account in the Change Limits editor.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What the ceilings feel like<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The behavior at each ceiling is chosen to degrade the offending account gracefully and leave its neighbors untouched. The table above lists them; two are worth dwelling on.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Memory is the honest one. At the ceiling the kernel reclaims inside that one account&#8217;s group, and in the worst case ends the account&#8217;s own offending process, not anyone else&#8217;s. An undersized memory ceiling can terminate the account&#8217;s own worker mid-task, so the fix is sizing the dial sensibly. SPanel&#8217;s monitoring tells the two apart: a server-wide out-of-memory event raises an admin alert; a per-account containment event is the limit doing its job.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The process ceiling is the other: a fork past it <strong>simply fails<\/strong>, which is why a fork bomb fizzles instead of taking down the process table. Throttled, contained, slowed, refused: four concrete verbs, no error page in sight.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Burst mode: enforcement that watches the load<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">An optional layer over the sweep, burst mode, answers an obvious objection: why throttle an account to half a core at 4 a.m. when seven cores sit idle?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With burst mode on, cpm compares server load to core count once per second. While load stays below the core count (real spare capacity), limited accounts run unconfined and use what&#8217;s free. The moment load reaches the core count, confinement engages within about a second.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One honest caveat is a conservative tail: when pressure subsides, processes already confined stay in their groups until they exit, and only new work runs free again. The effect is mild but real. The mechanics live in our <a href=\"https:\/\/www.scalahosting.com\/kb\/spanel-burst-mode-hosting-limits\/\">burst mode write-up<\/a>. The principle: limits protect, they don&#8217;t punish.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Where this came from<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is one of SPanel&#8217;s clearest <a href=\"https:\/\/features.spanel.io\">Cloud Democracy<\/a> stories. For years, the most common reason providers gave for staying on another panel was per-account resource limiting, historically a separate, paid operating-system layer. The requests asked for exactly this: CPU, RAM, IO, IOPS, and process caps per account, without buying another license. We built them on the kernel&#8217;s own control groups: native, with no CloudLinux license needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One scope note: this is resource enforcement, not filesystem virtualization. SPanel does not provide a CageFS-style per-account virtual filesystem. Account isolation comes from standard Linux users and permissions plus SShield and the security stack; resource limits come from cgroups v2.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Demo flow<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Deterministic Admin Interface steps for the screens in this article.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log in to the SPanel <strong>Admin Interface<\/strong> with admin credentials.<\/li>\n\n\n\n<li>Under <strong>Accounts Management<\/strong>, open <strong>Packages<\/strong> and click <strong>Create a New Package<\/strong> (or <strong>Modify<\/strong> an existing package).<\/li>\n\n\n\n<li>On the <strong>Advanced Limits<\/strong> tab, capture the five kernel dials: CPU Limit, Memory Limit, Storage Transfer Rate, IOPS Limit, and Maximum Total Processes.\u00a0<\/li>\n\n\n\n<li>Switch to the <strong>Basic Limits<\/strong> tab and capture the storage and creation-count dials (disk space, inodes, addon domains, email accounts, databases).\u00a0<\/li>\n\n\n\n<li>From <strong>Manage Accounts<\/strong>, open a limited account&#8217;s <strong>Actions<\/strong> menu and choose <strong>Change Limits<\/strong>; in the <strong>Change the limits of user<\/strong> editor, open the <strong>Advanced Limits<\/strong> tab to read the account&#8217;s five current values.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-kernel-limits-check-1024x640.webp\" alt=\"We Built Resource Limits on cgroups v2 &#8211; the Same Kernel Tech Containers Run On, Demo flow\" class=\"wp-image-6357\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-kernel-limits-check-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-kernel-limits-check-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-kernel-limits-check-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-kernel-limits-check.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Try it on a real server<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To see the dials and a limited account&#8217;s current values on a live server, spin up a ScalaHosting managed VPS; SPanel and every limit here are included free, with no per-account fees or extra OS license. If there&#8217;s a feature you\u2019re missing, the <a href=\"https:\/\/features.spanel.io\">Cloud Democracy board<\/a> is the place to suggest it and possibly see it in new SPanel versions. Field-level reference lives in the <a href=\"https:\/\/www.spanel.io\/docs\">SPanel documentation<\/a>.<\/p>\n\n\n<div class=\"shortcode-cta-new-wrap row cloudvps\">\r\n    <img decoding=\"async\" class=\"shortcode-logo\" src=\"\/blog\/images\/shortcode-bg-new-logo-cloudvps.svg\" alt=\"shortcode-logo\" title=\"shortcode-logo\"\/>\r\n    <div class=\"shortcode-cta-img col-10 col-sm-7 col-md-5\">\r\n        <img decoding=\"async\" class=\"shortcode-bg\" src=\"\/blog\/images\/shortcode-bg-new-cloudvps.webp\" alt=\"shortcode-bg\" title=\"shortcode-bg\"\/>\r\n    <\/div>\r\n    <div class=\"shortcode-cta-content col-12 col-md-7\">\r\n        <div class=\"content\">\r\n            <div class=\"heading\">Supercharge Your Business with an All-inclusive Fully Managed Cloud<\/div>\r\n            <div class=\"list-wrap\">\r\n                <div class=\"list\">\r\n                    <div><b>Free, Effortless & No-Downtime Migration<\/b><\/div>\r\n                    <div><b>Anytime Unconditional Money-back Guarantee<\/b><\/div>\r\n                    <div><b>Full Scalability & 24\/7 Expert Cloud Support<\/b><\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"btn-wrap row\">\r\n                <div class=\"col-auto\">\r\n                    <a class=\"button green\" href=\"https:\/\/www.scalahosting.com\/managed-cloud-hosting.html\">Start Now<\/a>\r\n                <\/div>\r\n                <div class=\"col-auto\">\r\n                    <button class=\"button brown_outer\" title=\"Contact Sales\" onclick=\"chatChangeVisibility(this, 'maximize', {}, 5);\">Chat with our Experts<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQ<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Does SPanel use cgroups v1 or v2?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> cgroups v2, the same generation modern container runtimes use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Do I need CloudLinux to limit CPU and RAM per account?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. SPanel enforces CPU, memory, disk throughput, IOPS, and process limits natively through cgroups v2, with no separate OS layer or license. This is resource limiting, not CageFS-style filesystem virtualization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>What does a CPU limit of 100 mean?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> One full CPU core. 50 is half a core; 200 is two cores. The number is a share of a core, not of the whole server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>How fast do limits take effect?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> The cpm service sweeps every second, so a new process is confined within about a second. Sustained overload is contained; sub-second microbursts are not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>What happens when an account hits its memory limit?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> The kernel reclaims memory inside that account&#8217;s group only, in the worst case, ending the account&#8217;s own offending process. The rest of the server is unaffected.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Is the disk throughput limit the same as my bandwidth?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. It governs storage (disk) traffic in MB\/s, not internet traffic. ScalaHosting managed VPS plans include unmetered network traffic.<\/p>\n\n\n\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"https:\/\/schema.org\",\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [{\n        \"@type\": \"Question\",\n        \"name\": \"Does SPanel use cgroups v1 or v2?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"cgroups v2, the same generation modern container runtimes use.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"Do I need CloudLinux to limit CPU and RAM per account?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. SPanel enforces CPU, memory, disk throughput, IOPS, and process limits natively through cgroups v2, with no separate OS layer or license. This is resource limiting, not CageFS-style filesystem virtualization.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"What does a CPU limit of 100 mean?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"One full CPU core. 50 is half a core; 200 is two cores. The number is a share of a core, not of the whole server.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"How fast do limits take effect?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"The cpm service sweeps every second, so a new process is confined within about a second. Sustained overload is contained; sub-second microbursts are not.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"What happens when an account hits its memory limit?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"The kernel reclaims memory inside that account's group only, in the worst case, ending the account's own offending process. The rest of the server is unaffected.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Is the disk throughput limit the same as my bandwidth?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. It governs storage (disk) traffic in MB\/s, not internet traffic. ScalaHosting managed VPS plans include unmetered network traffic.\"\n        }\n      }]\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>SPanel enforces per-account limits on CPU, memory, disk throughput, disk IOPS, and processes using Linux control groups (cgroups v2), the same kernel mechanism that container runtimes are built on. A small SPanel service, cpm, places each account&#8217;s processes into its own control group and re-checks once per second. You get that at no additional cost [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"Resource Limits on cgroups v2: Built for Modern Hosting | ScalaHosting KB","_seopress_titles_desc":"Learn how SPanel uses cgroups v2-the same Linux kernel technology behind containers-to deliver precise resource limits, stability, and performance.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[66],"tags":[],"class_list":["post-6354","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/comments?post=6354"}],"version-history":[{"count":3,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6354\/revisions"}],"predecessor-version":[{"id":6362,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6354\/revisions\/6362"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/media?parent=6354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/categories?post=6354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/tags?post=6354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}